|
»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo: / pugs: / std: , or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend! Set by moderator on 20 October 2009. |
|||
| jnthn | What could possibly go wrong? ;-) | 00:00 | |
| TimToady | I would not expect 1 | ||
| jnthn | tbh I don't expect we're going to get this right first time anyway - I'm just trying to get an insight into your vague expectations, so I can get something prototyped. | ||
| TimToady | it's not a list assignment | ||
| jnthn | Ah, OK. | ||
| So what would you expect $foo to get? | 00:01 | ||
| $capt? $capt.Scalar? | |||
| TimToady | well, if it were $foo := bar I'd expect $foo.WHAT to be Parcel, probably | ||
| but copying a Parcel might do something to it | |||
| jnthn | Hmm | 00:02 | |
| TimToady | (I think return is Parcel, not Capture, actually) | ||
| jnthn | Wait, when did our capture from earlier become...oh, OK. :-) | ||
| TimToady | return 1,2,:a<b> is just three return values | ||
| jnthn | It only becomes a capture in the case of my ($x, $y, :$a) := foo, and it's because the signature binding coerces it into a capture? | 00:03 | |
| TimToady | I guess that means that sub return (|$parcel) doesn't capturify | ||
| jnthn | It parcelifies? :-) | ||
| TimToady | it's born parcelified | ||
| jnthn | OK, but in general we'd like to be able to optimize somesub(1,2,:a<3>) to build a capture right off. | 00:04 | |
| TimToady | comma syntax creates parcels at compile time | ||
| yes | |||
| jnthn | I'm OK if it means that return is just special and doesn't do that. | ||
| TimToady | but we can recognize that at compile time | ||
| well, if |$foo captures the rest of the capture, then we can't undo the capturization of sub foo ($first, |$rest) easily | 00:05 | ||
| jnthn | Are you thinking we might want a general mechanism for saying "this sub wants a parcel not a capture"? Or can we just handle it in the compiler as "ah, it's a return statement control"? | ||
| TimToady | well, I was just thinking that |$parcel works as the first argument, but as soon as you start binding one real argument, it capturifies and then you can only say |$capture | 00:06 | |
| but maybe we can do sigil tricks instead | 00:07 | ||
| jnthn | Yes, I'd been under the impression that :(|$capture) is fine, but anything else in a signature with one of those in is kinda bogus/invalid. | ||
| Unless it's unpacking that capture, of course. | |||
| TimToady | I saw it as shifting @$capture or %$capture<key>:delete as you use up bits of the capture during binding | 00:08 | |
| and |$cap just returns the remnant | |||
| jnthn | Oh, interesting. | ||
| I'd seen us not damaging the original capture, just taking things from it. | |||
| TimToady | well, something to be said for that view too | 00:09 | |
| jnthn | Well, I have two use cases for that way. | ||
| TimToady | especially given callsame | ||
| jnthn | 1) yes, that. | ||
| 2) in multi-dispatch, when we have to do a bindability check | |||
| That is, we need to give the capture a run through a couple of signatures to ask "can you bind it" | |||
| TimToady | in that case |$cap would copy in the rest of the capture, since you do have track your position in the positionals at least | 00:10 | |
| jnthn | Hmm. | ||
|
00:10
literal joined
|
|||
| jnthn | I'd kinda seen captures themselves as immutble. | 00:10 | |
| TimToady | which is why you'd make a copy | ||
| jnthn | Ah, OK. | 00:11 | |
|
00:11
nihiliad joined
|
|||
| jnthn | We could do it that way too. | 00:11 | |
| TimToady | but maybe we leave the copying to the user | ||
| and just let them bind |$cap in addition to any other args | |||
| jnthn | to be honest though, I don't see how implementing it by modifying the capture helps that much. | ||
| Certainly, I can't see it being all that efficient. | |||
| TimToady | it was just my mental picture, but I agree captures are immutable | ||
| much like strings are really immutable on some level, but the container can hide that or cheat | 00:12 | ||
| jnthn | Aye, true. | ||
| Implementation experience on my part so far suggests keeping them immutable for real is the way to go, especially since it will make callsame trivial. | 00:13 | ||
| TimToady | however, that perhaps implies that partial binding for "for" not only has to be able to stop in the middle, but restart there. | ||
| or that "for" transmutes the positionals into an iterable (mutalbe) list | 00:14 | ||
| jnthn | I was leaning more towards the second on that. | ||
| Haven't quite figured out how it will look yet though. | |||
|
00:15
Schwern joined
|
|||
| jnthn | Going back to where we were before though... | 00:15 | |
| sub foo() { return 1 }; my $a = foo(); # here we'd expect $foo to be 1? | 00:16 | ||
| TimToady | maybe we just have a lazy bind-repeatedly primitive | ||
| jnthn | sub foo() { return 1,2,3 }; my $a = foo(); # here we'd expect $foo to not be 1 | ||
| If the payload of the return exception is a parcel in both cases, what's the operation on the parcel that gives us these semantics? | 00:17 | ||
| TimToady | parcels are like captures in that a single value in item context drops the wrapper | ||
| jnthn | I think for my ($a, $b, $c) = foo() then it's just ".list" | ||
| OK, so the answer is "just put it in item context". | |||
| That works for me. | 00:18 | ||
| TimToady | whereas the latter is a list assignment, hence list context | ||
| jnthn | OK. | ||
| So right now I'm thinking of a first cut whereby... | |||
| 1) return is special-cased to not make a capture, but instead just give return the parcel | 00:19 | ||
| 2) return uses that as the payload | |||
|
00:19
payload joined
|
|||
| jnthn | 3) something handling a return value contextualizes it as .item or .list depending on what type of assignment we're doing | 00:19 | |
| TimToady | missing a step there | 00:20 | |
| the return value gets incorporated into the super-parcel of the argument list foo was called in as a sub-parcel | 00:21 | ||
| how that superparcel is bound eventually determines the context of the subparcel | |||
| foo(1,2,bar()) foo gets superparcel, of which bar's subparcel is the 3rd item | |||
| jnthn | Hmm | 00:22 | |
| OK. | |||
| TimToady | if foo is ($$$) then bar is in item context, otherwise not | ||
| jnthn | OK, but (just to make sure I follow): | 00:23 | |
| TimToady | context is always lazy till binding/assignment | ||
| jnthn | sub bar { return 1,2 } | ||
| sub foo($a, $b, $c) { ... } | |||
| TimToady | returns Parcel(1,2) | ||
| jnthn | foo(1, bar()) # error? | ||
| TimToady | correct | ||
| must say |bar() | 00:24 | ||
| jnthn | That is, it can only bind to one parameter, which then enforces a context? | ||
| This sounds saner than I first feared. :-) | |||
| TimToady | however, if foo(*@a) then it finds itself in list context and flattens | 00:25 | |
| jnthn | Right. | ||
| Sounds like I very literally *can* just return a Parcel. | |||
| TimToady | indeed | ||
| jnthn | And whatever "consumes" it next does the Right Thing. | ||
| TimToady | the real trickiness will be in how to create the superparcel such that \\@foo and @foo work right | ||
| jnthn | \\@foo and @foo where? In the signature? | 00:26 | |
| TimToady | no, in the call args | ||
| jnthn | Ah. | ||
| TimToady | @foo is like bar() in that it will flatten if it finds itself in list context | 00:27 | |
| lambdabot | Maybe you meant: do faq ft todo yow | ||
| TimToady | whereas \\@foo is like [...] | ||
| which never flattens | |||
| even in list context | |||
| jnthn | Ah, OK. | 00:28 | |
| TimToady | so either we have the bare object autoflatten and we suppress that, or we have the bare object never autoflatten, and insert code that flattens in list context | ||
| jnthn | So far as I understand, we do the latter in Rakudo now. | ||
| TimToady | I think that's the right approach | 00:29 | |
| jnthn | pmichaud++ would be able to confirm that, he understands that bit better than me. :-) | ||
| TimToady | so $foo that happens to contain an Array doesn't flatten | ||
| jnthn | Yeah | ||
| We currently have that now by wrapping it in a kinda Perl6Scalar proxy object. | |||
| So it's "flagged" as "don't flatten me" | |||
| TimToady | likewise foo(1,2,\\@bar) really means pass the bare object and do nothing extra | 00:30 | |
| jnthn | So when the flattener is doing its list context flattening, it knows to pass over it. | ||
| TimToady | I think the flag should be "flatten me", not "don't flatten me" | ||
| by default an object sitting there in the list shouldn't flatten | |||
| jnthn tries to remember if @a = (@b, @c) flattens @b and @c or not | 00:31 | ||
| TimToady | so [...] can just insert an Array into the list and not worry about it | ||
| yes, those flatten because @ turns on the flattening | 00:32 | ||
| jnthn | nod. We handle those I think by that constructor just making sure they're flagged as "don't flatten me" | ||
| Hmm. | |||
| I wonder if we get that right. | |||
| rakudo: my @b = 1,2,3; my @c = 4,5,6; my @a = (@b, @c); say @a.elems | |||
| p6eval | rakudo e8cac1: OUTPUT«6» | ||
| jnthn | Ah, yes | ||
|
00:32
orafu joined
|
|||
| jnthn | I'm probably missing something. | 00:32 | |
| rakudo: my @b = 1,2,3; my @c = 4,5,6; my @a = (\\@b, \\@c); say @a.elems | 00:33 | ||
| TimToady | I think the default should be not to flatten unless explicitly marked as flattenable | ||
| p6eval | rakudo e8cac1: OUTPUT«2» | ||
| jnthn | That may well be a better default. | ||
| TimToady | and the tricky thing about \\@x is that it's taking that marker off, not putting one on | ||
| it just denatures the @ | |||
| and turns it into a [...] equivalent | 00:34 | ||
| (without the recomposition, of course) | |||
| jnthn | Hmm, yes. | 00:35 | |
| TimToady | well, thank for eliciting some of the random thoughts in my decoherent brane | ||
| jnthn | Trickiness. | ||
| TimToady | *thanks | ||
|
00:35
literal joined
|
|||
| jnthn | Thanks for your time. You've cleared a lot of stuff up for me. | 00:35 | |
| TimToady | that's why I said tricky at the beginning, because it's counterintuitive on some level | ||
| jnthn | Yes, I just took a while to see the trickiness. | ||
| TimToady | the first notion is that \\@x must wrap @x somehow, not dewrap it | 00:36 | |
| jnthn | Yes | ||
| TimToady | but \\ is more of an anti-function than a function | ||
| jnthn | I fear that's what we are doing in Rakudo. | ||
| Juerd | Is \\ a good symbol for that? It may be diagonal, but it's still very flat. | 00:38 | |
| TimToady | interestingly, a Parcel itself is like @ in that it is marked as flattenable, and \\(1,2,3) takes that marker off | ||
| jnthn | \\(1,2,3) doesn't create a Capture these days? | 00:39 | |
| Or you just mean, a Capture doesn't carry that marker? | |||
| TimToady | I think the historical usages of \\ play well here in suppressing the normal expectation of the following construct | ||
| it's sort of a "don't" operator :) | |||
| jnthn chuckles | 00:40 | ||
| TimToady | \\(1,2,3) is a non-intepolating parcel now, I think | ||
| jnthn | OK. | ||
| TimToady | er, non flattening | ||
|
00:41
quuxx joined
|
|||
| TimToady | foo(*@) would flatten foo($a, $b, (1,2,3)) to 5 args but foo($a, $b, \\(1,2,3)) would be three args | 00:41 | |
| carlin | quux segfaulted and someone tooks its nick :-( | ||
| TimToady | the third of which would be a Parcel | ||
| Juerd | Okay, then I won't make a fool out of me by suggesting & :P | ||
| TimToady | would conflict with the verb nounifier in any case | 00:42 | |
| Juerd | I thought you liked a challenge! | ||
| TimToady | I liked such challenges when I designed Perl 1 | ||
| now I am a coward. :) | |||
| Juerd | When did Perl 6 stop being about shifting symbols all across the operator space ;) | 00:43 | |
| TimToady | about the time the universe stopped being opaque to light | ||
| Juerd | I remember that I was once scared that every new idea would affect the spelling of just about every existing operator. | 00:44 | |
| But ASCII is flexible enough \\o/ | |||
| TimToady | one must certainly take that into account, but major upheavals are less likely these days | 00:45 | |
| Juerd | And for that I'm very grateful :) | ||
| jnthn also | 00:46 | ||
| Feels like we're almost converging. | |||
| TimToady | however, asteroids are still more likely in the morning than in the evening, and slightly more likely in autumn than in spring... | ||
| Juerd | Perl 5 is diverging though. | ||
| TimToady | in a sense, it must | ||
| it cannot converge without becoming Perl 6 | |||
| and borrowing ideas piecemeal will force divergence | 00:47 | ||
| Juerd | Are \\w, \\s and \\d supposed to match codepoints outside the ascii range in Perl 6? | ||
| TimToady | yes | ||
| Juerd | Perl 5 is going back to ascii-only for those, I read in perl5110delta :( | ||
| I think that's an insanely bad idea. | 00:48 | ||
| TimToady | I do too. | ||
| jnthn | I was kinda like "huh what" when I read that. | ||
| Juerd | It does mean that Perl 6's behaviour is now different, and should be specced instead of implied. | ||
| jnthn | And hoped I'd misunderstood 'cus I'd not had enough coffee, but apparently not. :-( | ||
| I liked that I could write regexes with \\w and \\d and have them match other types of word and digit characters beyond "those in ASCII". | 00:49 | ||
| Juerd | Oh, and the workaround is a compile time option. Site wide configuration's worked for PHP, so why not try it with Perl, they might have thought ;) | ||
| TimToady | it's terribly bad Huffman coding to restrict \\w to ascii | 00:50 | |
| obra__: see ^^ | |||
| jnthn | Juerd: Oh ouch. :-( | ||
| TimToady | please kill that idea | ||
| Perl 5 must not revert to ASCII semantics where we've been gaining ground on Unicode for many years | 00:51 | ||
| Juerd | Current Perl 5 behaviour is quasi-random ascii or unicode. There's a way to force it to do unicode (upgrade the string before matching). There's no clean way to force it to NOT do unicode. | 00:52 | |
| TimToady | contrariwese, if Perl 5 does go that route, I will just think of it as another nail | ||
| Juerd | So in order to upgrade your perl5.10 program to perl5.11 without anything breaking, you'll have to get rid of each and every \\d, \\w or \\s that could ever match non-ascii data. | 00:53 | |
| Or abuse the old bug, and decode, match, encode. | 00:54 | ||
| Er, the other way around: encode, match, decode | |||
| But then you can't use *any* unicode property. | |||
|
00:54
snarkyboojum joined
|
|||
| Juerd | TimToady: What do you mean by a nail? | 00:55 | |
| TimToady | another nail in the coffin | ||
| another fjord for which it pines | |||
| Juerd | Oh, thanks | ||
| Dutch has the same idiom but I didn't recognise it. | |||
| (nagel aan de doodskist) | 00:56 | ||
| TimToady | we probably stole it from you :) | ||
| Juerd | Ideas and information cannot be stolen, fortunately :) | ||
| Well, unless there's just one carrier. Then effectively you could steal it by stealing that. | 00:57 | ||
| 2am; off to bed | 00:58 | ||
| Good localtime | |||
| TimToady | night | 00:59 | |
| Juerd | .oO( Hm, what context would Good provide? ) |
||
| afk | |||
| TimToady | Good grief! | ||
| diakopter | hugme: grief Good | 01:00 | |
| hrm | |||
| hugme can't be a griefer I guess | |||
| jnthn | :-) | 01:02 | |
| diakopter | hugme: Good | 01:03 | |
| TimToady | lambdabot: Good | 01:04 | |
| diakopter | @Good | ||
| lambdabot | Unknown command, try @list | ||
| diakopter | @$$ | ||
| lambdabot | Maybe you meant: . ? @ bf do ft id pl rc v wn | ||
| TimToady | @list Good | ||
| lambdabot | No module "Good" loaded | ||
| diakopter | . ? @ bf do ft id pl rc v wn | ||
| nope, I guess that's not what I meant | |||
| diakopter tries to find TimToady's reply in the backlog | 01:05 | ||
| jnthn | Do we actually *use* lambdabot for anything these days? | 01:06 | |
| Oh, karma. | |||
| diakopter | --karma | ||
| carlin | Someone should write a karma-bot in Perl6 and then we can get rid of lambdabot | 01:07 | |
| diakopter | quuxx: learn karma | 01:08 | |
| sjohnson: javascript doesn't need semicolon in a great many places, esp at ends of lines | 01:12 | ||
| function a(){ print(1) }a() // DWIM | |||
| jnthn | OK, sleep time | 01:15 | |
| o/ | |||
|
01:15
Caelum joined
01:16
tak11 joined
|
|||
| diakopter | TimToady: are you saying that the object file needs to be the syml+ast? in that case, all the caching should be in sprixel. all the additional caching/persisting I add, I mean. | 01:17 | |
| however, that doesn't solve the problem for .pm file not loaded by the .setting | |||
| where "the problem" is "restrictively slow parse durations" | 01:18 | ||
| obra__ | TimToady: noted. I will do what I can. the current problem is that tthe implementation as first submitted badly broke lots of stuff | 01:19 | |
| TimToady: as of 5.11.1 the changes in 5.11.0 were reverted. | |||
| cls_bsd | a/win 30 | 01:21 | |
| diakopter | /win 46838729 | 01:23 | |
| obra_ | TimToady: if you see p5p doing anything else that feels wrong, I'm happy to go wave the carrot and stick around | 01:33 | |
| sjohnson | diakopter: there are times when it is needed... prototyping is one instance | 01:34 | |
| in other words, if you try to join them all on one line, the semicolons must be present in some cases | 01:37 | ||
|
01:37
snarkyboojum_ joined
01:39
payload joined
01:40
dduncan joined,
dduncan left
01:57
jaldhar_ joined
01:59
Exodist joined
|
|||
| obra_ | TimToady: ping? Abigail asks if the same ruling applies to \\d (and presumably also \\s) | 02:05 | |
| TimToady | yes, it does | 02:06 | |
| obra_ | My assumption would be "yes" .. | ||
| oh good. | |||
| Thanks :) | |||
| TimToady | the best future direction would be more toward nailing down the actual type of the currently untyped 8-bit buffers | ||
| fax | Abigail !!! | 02:07 | |
| obra_ nods. | |||
| TimToady | thanks | 02:08 | |
| obra_ | Thanks for making a definitive statement. (Leaving aside that it's the answer that makes me happiest, I'm just happy that the debate is finished) | ||
| fax | I never really recovered from that backref prime test | ||
| obra_ | Now p5p just need to address the deprecation mess | ||
| The consensus among folks hacking on the core seems to be "deprecated features should not be removed unless they're significantly hindering performance or new functionality. And then only after they've been warning as deprecated for at least one major version cycle. | 02:10 | ||
| But there's a historical mess of things marked deprecated because the implementations were awful and things marked deprecated because the language feature was awful and needed to go. | 02:11 | ||
| There is disagreement over what's in column A and what's in column B. | |||
| The most interesting change for 5.12 in this sphere is that nicholas has written code to enable deprecation warnings by default. | 02:12 | ||
| TimToady | +1 | ||
| obra_ | Woot. | 02:13 | |
| My inclination is to not kill anything more for 5.12. ($[ went already) and see how the world likes those warnings | |||
| and if there are things in 5.13 that are really getting in the way, we can discuss them. | 02:14 | ||
| I got particularly cranky when someone tried to deprecate ' as a package seperator a few weeks back. | |||
| But I learned with 5.001m and the pink camel, so I may be a special case | |||
| TimToady | in p6 ' is legal *within* an identifier | 02:15 | |
| as is - | |||
| obra_ can't wait for production grade p6. | |||
| TimToady | EMETOO | 02:16 | |
| obra_ | The justification for wanting ' to warn is that newbies try to do $name = 'Bob'; print "This is $name's computer" | 02:17 | |
| TimToady | not a problem with strict in p6? | ||
| s/?// | |||
| obra_ nods | |||
| dalek | p-rx: f645528 | pmichaud++ | (4 files): [nqp]: Add contextual vars, tests for optional args. |
||
|
02:18
tak11 joined
|
|||
| obra_ | in p5, it is certainly potentially confusing, but I'm the fix feels worse than the problem | 02:18 | |
|
02:28
hercynium joined
02:29
ShaneC joined
02:30
tak11 joined
02:48
tak__ joined,
agentzh joined
02:57
snarkyboojum joined
03:37
charsbar joined
03:46
eternaleye joined
|
|||
| jsut | how do you do $self->SUPER:: in p6? | 03:54 | |
|
04:01
JJack joined,
JJack left
|
|||
| TimToady | generally you just call nextsame; | 04:02 | |
| or callsame; if you want to capture control back | |||
| dalek | p-rx: ed8726a | pmichaud++ | (4 files): [nqp] Add named argument handling. |
04:08 | |
| p-rx: 742167e | pmichaud++ | (3 files): [nqp]: Add modules, package-based names. |
|||
|
04:20
justatheory joined
04:48
quuxx joined
|
|||
| dalek | p-rx: e1d65a0 | pmichaud++ | (3 files): [nqp]: Add class declarations and method calls. |
04:51 | |
| p-rx: 8199cf6 | pmichaud++ | (4 files): [nqp]: Add 'self', methodop tests. |
04:57 | ||
| p-rx: 9bfe3c4 | pmichaud++ | t/nqp/28-subclass.t: [nqp]: Add tests for subclassing. |
|||
|
05:06
Bzek joined
05:10
quietfanatic joined
|
|||
| quietfanatic | Is there any chance I can declare context variables in a signature in the near future? | 05:12 | |
| rakudo: sub x ($*thing) { y() }; sub y { say $*thing }; x(45); | |||
| p6eval | rakudo e8cac1: OUTPUT«Invalid twigil used in signature parameter. at line 2, near ") { y() };"in Main (file src/gen_setting.pm, line 1250)» | ||
|
05:13
Bzek_ joined
05:20
mberends joined
|
|||
| quietfanatic | Or another thing; | 05:22 | |
| rakudo: say (&sin, &cos)>>.(pi) | |||
| p6eval | rakudo e8cac1: OUTPUT«sincos» | ||
| quietfanatic | rakudo: say ((&sin, &cos)>>.(pi)).perl | ||
| p6eval | rakudo e8cac1: OUTPUT«[{ ... }, { ... }]» | ||
| quietfanatic | I'd expect this to output [-1, 0] (or close) | 05:23 | |
| I mean [0, -1] or close | |||
| Or how about this | 05:24 | ||
| rakudo: say ((3, 4) <<,>> (5, 6)).perl | |||
| p6eval | rakudo e8cac1: OUTPUT«Bool::False» | ||
| quietfanatic | I'd expect this to be equivalent to the zip operator. | 05:25 | |
| dalek | p-rx: dd2ec36 | pmichaud++ | (3 files): [nqp]: Add statement_prefix:sym<make>, $/ $_ $! variables. |
05:26 | |
| p-rx: 1316068 | pmichaud++ | src/NQP/ (2 files): [nqp]: Add $<foo> and $[0] variables. |
|||
| TimToady | STD already siggy context vars | 05:32 | |
| *defines siggy | |||
| pmichaud | NQP supports context vars in signatures as well | 05:33 | |
| so it won't be long before rakudo has them. | |||
| quietfanatic | Oh goody | ||
| pmichaud | I'm a little surprised that Rakudo doesn't have them already. I think we're probably enforcing a check on the '*' twigil that shouldn't be enforced. | 05:34 | |
|
05:41
eternaleye_ joined
|
|||
| pugs_svn | r28926 | pmichaud++ | [pm.txt]: Another spec question for TimToady++ and others. | 05:53 | |
|
06:01
WXYZ joined
|
|||
| WXYZ | JavaScript is an object-oriented[2] scripting language used to enable programmatic access to objects within both the client application and other applications. It is primarily used in the form of client-side JavaScript, implemented as an integrated component of the web browser, allowing the development of enhanced user interfaces and dynamic websites. JavaScript is a dialect of the ECMAScript stan | 06:02 | |
| dard and is characterized as a dynamic, weakly typed, prototype-based language with first-class functions. JavaScript was influenced by many languages and was designed to look like Java, but to be easier for non-programmers to work with.[3][4] | |||
|
06:09
JimmyZ joined
06:11
astrojp_ joined
|
|||
| pmichaud | nopaste.snit.ch/18488 # accessing PIR opcodes directly from NQP | 06:17 | |
| dalek | p-rx: 463e6af | pmichaud++ | src/NQP/ (2 files): [nqp]: Allow subroutine and method names of form "category:sym<...>". |
06:19 | |
| p-rx: 2a89139 | pmichaud++ | (3 files): [nqp]: Add ability to access PIR opcodes directly via PIR:: pseudonamespace. |
|||
| pmichaud | time for sleep -- more tomorrow. | ||
|
06:20
drbean_ joined
06:26
japhb joined
06:37
pnate joined
07:01
astrojp joined
07:04
drbean joined
07:12
nothingmuch joined
07:13
nothingmuch joined
07:16
drbean_ joined,
iblechbot joined
07:24
[particle] joined
07:27
snarkyboojum joined
07:33
Su-Shee joined
|
|||
| Su-Shee | good morning. | 07:33 | |
| moritz_ | oh hai | 07:34 | |
|
08:13
rfordinal joined
08:18
ejs joined
08:23
payload joined
|
|||
| dalek | p-rx: 819be4d | pmichaud++ | t/nqp/30-pirop.t: [nqp]: Failure to plan(3); is like planning to fail. |
08:27 | |
| p-rx: b1c6254 | pmichaud++ | src/ (4 files): [nqp]: Add regex_declarator. |
|||
| p-rx: c571f83 | pmichaud++ | (3 files): [nqp]: Add grammars, tokens, regexes, rules, and protoregexes. |
|||
| p-rx: eb5ffe7 | pmichaud++ | t/nqp/32-protoregex.t: [nqp]: Add some simple protoregex tests. |
|||
|
08:31
ejs1 joined
08:46
PZt joined
08:58
mariuz joined
09:19
snarkyboojum joined
09:33
rblasch joined
09:34
xenoterracide joined
09:37
xenoterracide joined
09:41
xenoterracide joined
09:46
xenoterracide joined
09:47
pranjal5215 joined
09:49
pranjal5215 left
09:59
astrojp left
10:46
iblechbot joined
10:47
dakkar joined
10:56
payload joined
11:07
lisppaste3 joined
11:10
IllvilJa joined
11:11
ejs2 joined
|
|||
| IllvilJa | Folks, that perl 6 book you (Michaud, Masak, Worthington and Lenz) started to write was very nice reading, made me understand some key aspects of this new language. | 11:12 | |
| Keep up the good work, this is the "missing piece" in the perl 6 documentation we have been waiting for and desperately needs. | 11:13 | ||
| moritz_ | IllvilJa: good to hear it, thanks for teh feedback | 11:14 | |
| Juerd | New language \\o/ | 11:15 | |
|
11:15
hanekomu joined
11:17
pnu joined
|
|||
| mathw | IllvilJa: I think you just made the authors very happy | 11:21 | |
| IllvilJa | mathw: That was intentional | ||
| mathw | :) | 11:22 | |
| Personally I just like to see people learning about Perl 6 | |||
|
11:22
NorwayGeek joined
11:23
colomon joined
|
|||
| moritz_ wonders if the release announcement made it sufficiently clear that we don't really have a book yet, just fragments | 11:24 | ||
|
11:25
xenoterracide joined
|
|||
| IllvilJa | moritz_: that were clear, but even if it is fragments being offered so far, they manage to make the covered topics clearer. | 11:25 | |
| mathw | \\o/ | 11:26 | |
| moritz_: I intend to contribute to it at some point, but work's burning all my tuits at the moment. | |||
| moritz_ | mathw: quite understandable | 11:29 | |
|
11:29
xenoterracide joined
11:30
envi^home joined,
KyleHa joined
|
|||
| KyleHa | moritz_: Ping! | 11:31 | |
| moritz_ | KyleHa: you pang :-) | ||
| KyleHa | Hello! | 11:32 | |
| moritz_ | or something :-) | ||
| KyleHa | I'm looking at the recent t/spec/TODO changes. | ||
| ...and stuff. | |||
| A couple of them look like things I thought I tested. | 11:33 | ||
| So now I'm trying to find the revisions to show you to see if you concur. | |||
| moritz_ | KyleHa: if you think you tested them, feel free to remove them | ||
| jnthn | oh hai folks | 11:34 | |
| moritz_ | KyleHa: it's not a definitive list, and not a tracking system either, just a list to get some ideas what needs to be done | ||
| lolitsjnthn! | |||
|
11:34
masak joined
|
|||
| masak | oh hai, #perl6 | 11:34 | |
| KyleHa | OK. | ||
| moritz_ | lolthereisamasaktoo | 11:35 | |
| jnthn | lol | 11:36 | |
| I only *just* beat masak here. :-) | |||
| masak backlogs to find out what the others are talking about | |||
| jnthn only just got here and has no clue | |||
| mathw | jnthn, masak: IllvilJa had compliments about the book. | 11:38 | |
| masak | now, that's an interesting nick. | ||
| it means 'malice' in Swedish. | 11:39 | ||
| IllvilJa | masak: I know, I'm a Swede :-). | ||
| masak | IllvilJa: tja. :P | ||
| moritz_ | IllvilJa: you're not alone :-) | ||
| IllvilJa | Hejsan! | ||
| masak | IllvilJa: where from are you? | 11:40 | |
| moritz_ | (not me, though) | ||
| IllvilJa | masak: I'm living in Stockholm (raised and born in good old Gothenburg though) | ||
| masak | a bit like me, then. | ||
| IllvilJa | Where are you from? | ||
| masak | living in Uppsala, but born and raised in the archipelago of the west coast. | ||
| IllvilJa | Where in that archipelago? | 11:41 | |
| masak | I bet you've heard about Orust, if you're from Gbg. | ||
| IllvilJa | Absolutely. | ||
| masak | well, a small island outside of Orust, situated just at the end of the world. | ||
| IllvilJa | Ok. So, what's Uppsala like? | 11:42 | |
| KyleHa | All this time I've been thinking Carl was a German. | ||
| moritz_ | KyleHa: maybe you confused him with me? :-) | ||
| masak | IllvilJa: Uppsala is wonderful. it'll be hard to move on, when that time comes. | 11:43 | |
| jnthn | masak: Just backlogged and read those. :-) | ||
| Gothenburg++ :-) | |||
| KyleHa | moritz_: I knew you were, but with Masak, I was just going by the name (Carl), which I think of as German. | ||
| IllvilJa | masak: sounds nice. I've been there a couple of times, and Uppsala seem to have a very nice down town at least. | ||
| masak | KyleHa: oh, but most of our kings are also called Carl in Sweden. | ||
| IllvilJa: nod. | 11:44 | ||
| moritz_ | (maybe I should add a voluntary registry of nickname => country mappings, and display small flags in the IRC logs :-) | ||
| jnthn wonders where KyleHa thinks he's from :-) | |||
| KyleHa | masak: Good to know! | ||
| IllvilJa | Ironically, Sweden had to 'import' our king from France once upon a time (a French guy named Bernadotte became the Swedish king and our current one is a descendant of him) | 11:45 | |
| masak | moritz_: nice idea. displaying a flag for each utterance feels like overkill, though. | ||
| moritz_ | masak: right | ||
| masak | IllvilJa: I'm not done backlogging yet, so maybe you've answered this question already: what brings you to our humble channel? | 11:46 | |
| moritz_ | masak: I've been thinking about various ways to show some of our community to the outside world | ||
| KyleHa | jnthn: I'm pretty sure you're way out of my time zone, but I don't think I ever thought about it. | ||
| masak | moritz_: woot. | ||
| moritz_ | maybe just a page where people can put up a picture of them, two lines of text, nationality... something like that | ||
| KyleHa | The sun never sets on the Perl 6 contributors? | 11:47 | |
| mathw | IllvilJa: It's hardly unusual, we've imported kings from Germany before | ||
| moritz_ | and maybe the offer to mentor newbies in the Perl 6 community | ||
| mathw | Also Scotland | ||
| moritz_ | sometimes you ejected them, too | ||
| :-) | |||
| mathw | Yes | ||
| moritz_ | at least the scottisch queen(s) :-) | ||
| IllvilJa | masak: I'm a perl 5 developer and I'm very interested in the next generation of perl 6, if for nothing else because it seem to be a very powerful language. | 11:48 | |
| mathw | Queen Mary of Scots wasn't our queen though... | ||
| Just a close relative | |||
| masak | IllvilJa: do you frequent Stockholm.pm meetings? | ||
| IllvilJa | Hm... no. When/where/how do they occur? Got any good URL? | ||
| masak | there's this mailing list that I could dig up for you. | 11:49 | |
| I'm not implying that the meetings themselves are frequent, by the way. :) | |||
| there was one this spring, and there was talk of one this fall. | |||
| IllvilJa | Ok, sounds intresting. | 11:50 | |
|
11:50
snarkyboojum joined
|
|||
| moritz_ | github.com/moritz/json/blob/master/...mar.pm#L16 # anybody spots the error? | 11:50 | |
| mathw doesn't | 11:51 | ||
| masak | hold on. | ||
| it shouldn't be '|'? | 11:52 | ||
| but '||'? | |||
| moritz_ | right | ||
| masak won! | |||
| masak wins | |||
| IllvilJa | While I'm here, how complete/working/reliable is the implementation of inter process communication in Perl 6? Things develop quite quickly here, so what did not really work yesterday in perl 6 might be useful today. | ||
| masak | lunch & | ||
| moritz_ | IllvilJa: quasi non-existant | ||
| pugs_svn | r28927 | kyle++ | [t/spec/TODO] See r28888 for tests for r28881 and note similar tests | 11:53 | |
| IllvilJa | moritz_: ok! | ||
| mathw was thinking about threading a bit | 11:55 | ||
| I'd like some way to say at the language level 'you must have this lock before calling this subroutine or you will be responsible for the destruction of the universe' | |||
|
11:55
bpetering joined
|
|||
| mathw | but that's largely because I'm working on some hideous multithreaded C++ which of course has no such capability | 11:55 | |
| and the comments appear to be wrong | 11:56 | ||
| moritz_ | that looks like desperation, not language design :-) | ||
|
11:59
rfordinal left,
takadonet joined
|
|||
| takadonet | morning all | 11:59 | |
| moritz_ | m\\o/rning | 12:00 | |
| takadonet | how are you this morning moritz_? | ||
| moritz_ | slightly flu-y, I fear | ||
| (and it's not really morning here anymore :) | 12:01 | ||
| jnthn | moritz_: shh...it's still not much over an hour since I got up. :-P | 12:02 | |
| moritz_ | jnthn: well, your "here" differs from my "here" anyway :-) | ||
| bpetering | yay for getting up past midday! :) | 12:03 | |
| hi all | |||
| moritz_ | hi bpetering | ||
|
12:03
ejs2 joined
|
|||
| jnthn | moritz_: That'd be a wonderful argument...apart from we're in the same timezone. :-) | 12:03 | |
|
12:03
IllvilJa1 joined
|
|||
| moritz_ | jnthn: still there are... cultural differences. | 12:04 | |
| jnthn | ;-) | 12:05 | |
| lisppaste3 | moritz_ pasted "JSON::Tiny test failure" at paste.lisp.org/display/89428 | 12:06 | |
| IllvilJa1 | Just a PS for any space geeks here: Nasa is trying to launch their new Ares 1 rocket (actually named Ares 1-X) and it can be followed via Nasa TV at www.nasa.gov. | ||
| moritz_ | if anybody got some spare tuits, I'd like some insight on that test failure | ||
| takadonet | already watching IllvilJa1 :) | ||
| moritz_ | which looks pretty confusing to me | ||
| because got and expected are the same | 12:07 | ||
| moritz_ suspects a bug in is_deeply | |||
| (that's t/04-roundtrip.t) | |||
| bpetering | moritz_: yeah, my first thought is "how are they being compared"? | 12:08 | |
| moritz_ | with Test.pm:is_deeply | ||
|
12:09
clkao joined,
buu joined,
Infinoid joined,
dmpk2k joined
|
|||
| bpetering | i've got several thoughts to discuss re: the book, when anyone has a chance. | 12:10 | |
| also, several nitpick-class changes if someone has a spare hug... | 12:11 | ||
|
12:11
JimmyZ joined
|
|||
| KyleHa | When is_deeply compares hash values, it first does a string compare and then a deep compare. Is that right? | 12:12 | |
| moritz_ | bpetering: what's your github ID? | 12:13 | |
| KyleHa: probably not | |||
| KyleHa | Seems to me it ought to JUST compare them deeply. Otherwise two different hashes with the same contents stringify differently but are deeply the same. I think. | 12:14 | |
| moritz_ | that's probably an optimization from the times before hash randomization | ||
| KyleHa: care to rip it out? | |||
| bpetering: and yes, I'm available for discussion | 12:15 | ||
| KyleHa | moritz_: I'd like nothing better, but I won't have time to do it for another two or three hours. | ||
| bpetering | moritz_: 'bpetering' | ||
| moritz_ | hugme: add bpetering to book | 12:16 | |
| hugme hugs bpetering. Welcome to book! | |||
| bpetering | I can do it now... | 12:17 | |
| where is the canonical Test.pm? | |||
| moritz_ | bpetering: there is no canonical one | 12:18 | |
| return if $a ne $b; | |||
| just compares the keys | |||
| so I don't think that's wrong | |||
| bpetering | great :| | ||
| moritz_ | and I don't know what KyleHa meant | ||
|
12:18
alexn_org joined
|
|||
| KyleHa | That's the line I was looking at, but I was reading it wrong. | 12:19 | |
| bpetering | why is Test.pm not under the umbrella of proto? | ||
| KyleHa | So I think what I saw isn't actually there. | ||
| bpetering | oh, and thanks moritz_++ :) | 12:20 | |
| moritz_ | bpetering: Test.pm is part of the compiler (and soon of the language)... | ||
| bpetering: traditionally each compiler has a Test.pm according to its own level of sophistication | 12:21 | ||
| and at the start it steals from a simple Test.pm from another impl :-) | |||
| for example pugs' Test.pm reports the caller's line number | |||
| something which rakudo still can't do | |||
| bpetering | moritz_: well, making that spec sounds good, since the language is defined in terms of passing the test suite | 12:22 | |
| moritz_ | it's been my plan for about a year, and @Larry agrees. But last time I tried it was a bit too ambitious :/ | ||
| bpetering | well, moritz_++ again for the idea - i agree completely (for what that's worth) | 12:24 | |
| but why is that failing? <o ... | 12:25 | ||
| where's the Test.pm that is behind the fail? | 12:26 | ||
|
12:26
ejs2 joined
|
|||
| moritz_ | in the rakudo repo | 12:27 | |
| I don't know yet if it's a is_deeply fail or a .perl fail | 12:29 | ||
| though I suspect the former | 12:30 | ||
| bpetering | how can it be a .perl fail? | 12:33 | |
| moritz_ | well, maybe the structures are indeed different, but .perl displays them as identical | 12:34 | |
| bpetering | but there should be no message printed in that case, no? | ||
| err, sorry! just adding confusion. | |||
| moritz_ | speaking of confusion, may rakudo fails to build | 12:35 | |
| /scratch/mlenz/rakudo/parrot_install/bin/parrot: symbol lookup error: /scratch/mlenz/rakudo/parrot/runtime/parrot/dynext/math_ops.so: undefined symbol: Parrot_pcc_get_context_struct | |||
| bpetering | you're right, given that output you can't tell. | ||
| moritz_ | rakudo: say True === True | 12:43 | |
| p6eval | rakudo e8cac1: OUTPUT«1» | ||
| moritz_ | rakudo: say undef eqv undef | 12:48 | |
| p6eval | rakudo e8cac1: OUTPUT«1» | ||
| bpetering | sorry moritz, my brain's in a terrible place for debugging, and i suspect it's beyond my ken anyway :( | ||
| moritz_ | rakudo: say [1, undef] eqv [1, undef] | ||
| p6eval | rakudo e8cac1: OUTPUT«1» | ||
| moritz_ | bpetering: that's fine, just thought anybody might have a spark of inspiration tha I lacked | 12:49 | |
| bpetering | can we get at Rakudo's Test.pm using p6eval? | 12:50 | |
| jnthn | moritz_: Your Rakudo fails to build, or your Parrot? | ||
| moritz_ | jnthn: rakudo fails to build | 12:52 | |
| jnthn | Using the PARROT_REVISION Parrot? | ||
| Or just latest? | |||
| bpetering | rakudo: say is('bpetering','sufficientlycaffeinated',':(') | 12:53 | |
| p6eval | rakudo e8cac1: OUTPUT«Could not find non-existent sub isin Main (file src/gen_setting.pm, line 295)» | ||
| bpetering | well, that's kinda telling | ||
| jnthn | rakudo: use Test; say is('bpetering','sufficientlycaffeinated',':(') # clearly, not ;-) | ||
| bpetering | rakudo: use Test; say is('bpetering','sufficientlycaffeinated',':(') | ||
| p6eval | rakudo e8cac1: TIMED_OUT | 12:54 | |
| bpetering | aw. *slinks away sadly* | ||
| bpetering doesn't understand why 'use Test' would cause a TIMED_OUT | 12:55 | ||
| moritz_ | we've had a lot of those timeouts lately, and I don't understand at all where they are coming from | ||
| bpetering | rakudo: use Test; say is('foo','bar','doesnotcompute'); | 12:58 | |
| p6eval | rakudo e8cac1: TIMED_OUT | 12:59 | |
| jnthn | rakudo: print "TIMED_OUT" | ||
| p6eval | rakudo e8cac1: TIMED_OUT | ||
| bpetering | well, it *looks* like 'use Test' is giving TIMED_OUT consistently, so maybe that's a hint? | 13:00 | |
| jnthn | Or did it? ;-) | ||
| bpetering | jnthn: now figure out how to do it without us seeing the trigger :P | ||
| moritz_ | it seems that rakudo doesn't install Test.pm as part of its 'make install' | ||
| and p6eval uses an installed rakudo | |||
| (it would be even better if it installed a Test.pir too) | 13:01 | ||
| dalek | kudo: 3ec4d40 | moritz++ | src/setting/Operators.pm: implement Bool eqv Bool, be more verbose in error message in cases where eqv is not yet implemented |
||
| kudo: c0ba847 | moritz++ | README: [README] "make install" in parrot is now sufficient |
|||
| moritz_ | but we see a lot of timeouts for other things too | ||
| rakudo: class A { method b { say "hi" } }. A.new.b | |||
| p6eval | rakudo e8cac1: OUTPUT«Confused at line 2, near ". A.new.b"in Main (file <unknown>, line <unknown>)» | ||
| moritz_ | rakudo: class A { method b { say "hi" } }; A.new.b | ||
| p6eval | rakudo e8cac1: TIMED_OUT | 13:02 | |
| moritz_ | anything that involves a class declaration, it seems | ||
| and interestingly enough, that line appeared twice in p6eval's log | 13:03 | ||
|
13:03
SmokeMachine joined
|
|||
| bpetering | moritz_: could the TIMED_OUT error include additional info? | 13:03 | |
| carlin | rakudo: class A {} | ||
| p6eval | rakudo e8cac1: TIMED_OUT | 13:04 | |
| bpetering | or has that been tried (i.e. dumping some state)? | ||
| moritz_ | bpetering: it says CPU time limit exceeded on the tty where I started p6eval | ||
| don't know if that's any more helpful | |||
| rakudo: class A { method b { say "hi" } }. A.new.b | 13:05 | ||
| p6eval | rakudo e8cac1: OUTPUT«Confused at line 2, near ". A.new.b"in Main (file <unknown>, line <unknown>)» | ||
| moritz_ | rakudo: class A { method b { say "hi" } }; A.new.b | ||
| bpetering | have you tried removing resource limits and then trying to duplicate TIMED_OUTs (in privmsg :) ? | ||
| p6eval | rakudo e8cac1: TIMED_OUT | ||
| moritz_ | the thought is kinda scary :/ | 13:06 | |
| looking at the process monitor I see that it is indeed using up all cycles from one CPU as long as it's running | 13:07 | ||
| bpetering | weird with a beard. | 13:08 | |
| moritz_ | when I run it from the console it takes real 0m2.669s | ||
| and the limit is 8s | |||
| bpetering | CPU? | ||
| moritz_ | it's a xen guest | 13:10 | |
|
13:10
[particle] joined
|
|||
| moritz_ | don't know what the physical CPU is | 13:10 | |
| bpetering | jnthn: that's not a disparaging remark about beards. i guess it's a pun or something. concepts don't usually have facial hair. sometimes i do but not as impressive as yours. | ||
| moritz_ | 4 cores, 700M free memory | 13:11 | |
| rakudo: class A { method b { say "hi" } }; A.new.b | |||
| p6eval | rakudo e8cac1: TIMED_OUT | ||
| jnthn | bpetering: huh? | ||
| oh | |||
| I see. :-) | |||
| Your rhyme full of slime. | 13:12 | ||
| :-) | |||
| bpetering | hmm, that woulda been a major WTF if you missed the first bit :) | ||
| jnthn | Yes...yes, it was... | ||
| :-) | |||
| bpetering | moritz_: 1) attach EvalbotExecuter to a rakudo instance on someone else's machine, maybe mine | 13:19 | |
| 2) maybe strace the rakudo process if possible | 13:20 | ||
| moritz_ | bpetering: I've copied the full chroot to a different server, will try it on that one soon | 13:21 | |
| bpetering | 3) try different things and see if they all have the same bizzarely high CPU usage behind the TIMED_OUT | ||
| ... or whether there's a different mode of failure in any case. | 13:22 | ||
| jnthn: my brain is full of slime :-) | |||
|
13:22
rfordinal joined
|
|||
| bpetering | moritz_: those aren't demands, they're ideas, the quality of which is implicitly qualified by my nonsense of late. | 13:24 | |
| moritz_ | bpetering: (ideas) that's how I understood it, yes | 13:27 | |
| bpetering | moritz_: cool :) | ||
| wanna discuss the book now or should we maybe wait til masak's around? | 13:28 | ||
| moritz_ | bpetering: both options work for me | 13:29 | |
| bpetering | well, there's a bunch of nitpicky grammar (linguistic) stuff i'll just commit, but my main thing so far is: | 13:32 | |
| in regexes.pod, line 85 - maybe link to the spec? | 13:33 | ||
| and also, is there a more approachable central point of reference for stuff like that? like the regex cheat sheet, but for the whole langugae? | |||
| moritz_ | not that I know of | 13:34 | |
| link to spec - that might be useful for an online version, but only limited so for a printed one | 13:35 | ||
| also the spec doesn't have a table of all assertions or backslash rules | |||
| it rather lists it as a difference to Perl 5 | |||
| bpetering | first thought: LTA :) | 13:36 | |
| moritz_ | aye | ||
| bpetering | ... because not *everyone's* coming from P5 | 13:37 | |
| and it would probably just be better | |||
| jnthn sets about re-working our various binder internals to really believe in capture-ish thingies. | 13:38 | ||
| moritz_ | and even those that are frequently don't know all the details about /s, /m, . ^ $ \\a \\z \\Z etc | ||
| bpetering | moritz_: i certainly don't :) | ||
| moritz_ | there you go :-) | 13:39 | |
| bpetering | but Perl 6 should prove a cure to my chronic dilettantism. Highly awesome, lots to learn. | 13:40 | |
| moritz_ | less to learn, actually | ||
| at least about regex anchors :-) | |||
| bpetering | aye :-) | ||
| bpetering believes in you, binder internals! now believe in capture-ish thingies! | 13:42 | ||
| jnthn: may the wind be at your back. | 13:43 | ||
| jnthn | bpetering: Aye, this is going to be slightly tricky. | ||
| bpetering | and yet you made it sound so easy :-) | 13:44 | |
| jnthn | But should get us a slight performance win and push the door to nested signatures a little wider open :-) | ||
| Well, in theory it's easier than a lot of the previous binding related work up until now. | |||
| bpetering | moritz_: thinking on how to make the basics non-boring... | 13:46 | |
| one option is to do something "the hard way" which you then do with ease the proper way... like, oh say, parsing JSON? | 13:47 | ||
| at least you don't have to type CreateObject("Scripting.Dictionary") over and over and over | |||
| moritz_ | bpetering: but then you'd have to introduce a recursive-descending parser along with the basics... | ||
| that's fine if you wrote such a thing before, but pretty nasty if you haven't | 13:48 | ||
| obra_ | TimToady: It sounds like there's a fairly serious concern about \\d and unicode matching in perl5. | ||
| moritz_ | because it's yet more stuff to wrap your head around | ||
| jnthn | Aye, conceptually hard example in opening chapter is probably not good. | ||
| bpetering | true enough... so do you reckon it's possible to (in general terms) do something the hard way which is then done the easy way using cool Perl 6 features? | 13:49 | |
| jnthn | I know for us compiler folks small hand-coded rec-desc parsers are what we do during a relaxing afternoons hacking by the pool over a beer, but it's not like that for most of the world. :-) | ||
| bpetering | jnthn: lol :-) | ||
| moritz_ | bpetering: if you do that, the example is contrieved, by definition | 13:50 | |
| bpetering | ... without introducing too much conceptual hardness? | ||
| moritz_ | because you write it harder than it needs to be | ||
| bpetering | moritz_: disagree, but not sure i can back up my disagreement :) | ||
| moritz_ | somebody mentioned yesterday that it might be a good idea to do some classical text processing | 13:51 | |
| like having two CSV files, and do joins on them | |||
| or so | |||
| that way you can demonstrate loops, hashes, arrays, if, etc. | |||
| jnthn | That's not a bad idea. | 13:52 | |
| Some text-munging, but where you don't really need to parse. | |||
| bpetering | I can haz merit? | ||
| to be clear, sounds good. | |||
| moritz_ | jnthn: yes, I thought about something so simple that you can use split() with a string | ||
| jnthn | moritz_: nod | 13:53 | |
| bpetering | how would that fit with the rest of the book... as it exists in actuality and in people's heads? | ||
| moritz_ | www.perlmonks.org/?node_id=803661 for example | ||
|
13:54
payload joined
|
|||
| bpetering | so we have some sort of higher-level coherence, i mean. | 13:55 | |
| moritz_ | the coherence is achieved on the perl 6-level, not on the example level (in my mind) | 13:56 | |
|
13:56
payload joined
|
|||
| pmichaud | good morning, #perl6 | 13:58 | |
| moritz_ | good morning pmichaud | ||
| bpetering | moritz_: so you want to decouple the purpose of the examples from the books structure? | ||
| morning pmichaud :) | |||
|
13:58
Bzek joined
|
|||
| moritz_ | bpetering: yes | 13:59 | |
| bpetering: that's pretty much how it is right now anyway | |||
| with the single exception that MMD and grammars use the same topic | |||
| pmichaud | jnthn: I figured out a (I think) good way to get started on the rakudo grammar refactor | 14:01 | |
| jnthn | pmichaud: Ah, good. | ||
| pmichaud: I was going to ask you about that. | |||
| pmichaud | basically, we start with nqp's grammar. It's based heavily on STD.pm | ||
|
14:01
perlsyntax joined
|
|||
| jnthn | Since I was pondering a Rakudo day tomorrow/Friday. | 14:02 | |
| bpetering | moritz_: think i agree with that - multi-purpose examples are more likely to achieve the goal of getting people up to speed IMO | ||
| jnthn | pmichaud: OK, sounds sane. | ||
| perlsyntax | if i download perl6 would that break my perl 5.10.0? | ||
| moritz_ | perlsyntax: no | ||
| perlsyntax | cool | ||
| pmichaud prepares for self-hosting nqp | 14:03 | ||
| moritz_ | (in fact you need Perl 5 to configure and build rakudo for now) | ||
| perlsyntax | i been hear good things about perl 6 moritz. | ||
| moritz_ | perlsyntax: that's good :-) | ||
| bpetering | perlsyntax: where from? | 14:04 | |
| jnthn | pmichaud: When do you think we might be ready to start on the Rakudo grammar refactor? | ||
| perlsyntax | wisconsin | ||
|
14:04
gravity joined
|
|||
| pmichaud | jnthn: maybe tomorrow or friday? | 14:04 | |
| [particle] | just like last time around | ||
| oops, stuck in scrollbackland | |||
| perlsyntax | why you ask bpetering? | ||
| pmichaud | jnthn: I expect that I'll have nqp self-hosting this morning, and then there are just a few other minor bits to put in place before I can declare it ready. | 14:05 | |
| bpetering | perlsyntax: sorry, i meant "where have you been hearing good things about perl 6 from?" | ||
| jnthn | perlsyntax: I think he was curious where you heard good things about Perl 6 from. :-) | ||
| pmichaud | it's already able to compile its own Actins.pm | ||
| jnthn | pmichaud: OK, let's aim for Friday then! | ||
| pmichaud | *Actions.pm | ||
| yes, Friday sounds good. | |||
| [particle] | are you releasing nqp-rx? | ||
| perlsyntax | II hear from my programmers freinds | ||
| pmichaud | [particle]: nqp-rx releases 2nd tuesday of each month | ||
| perlsyntax | How do i get start with perl 6? | ||
| jnthn | pmichaud: Also, I had a long and very helpful discusion with TimToady++ last night on multiple return value handling. | ||
| pmichaud | jnthn: yes, I read it in scrollback | 14:06 | |
| [particle] | excellent. | ||
| jnthn | pmichaud: OK, cool, just wanted to point you to it as a "probably worth reading" if you didn't already. | ||
| pmichaud | I skimmed it and it mostly made sense | ||
| jnthn | pmichaud: Mostly I'm happy because it gives me a path forward. | ||
| bpetering | perlsyntax: you can play with it right here in the channel, or private message if you'd like to be polite and not cause noise pollution :) | ||
| pmichaud | I bookmarked it for later reading :) | ||
| moritz_ | perlsyntax: if you know Perl 5 already, perlgeek.de/en/article/5-to-6 might be a good start | ||
| jnthn | I've no doubt we'll have to iterate on it a bit, but at least I can get something in place. | ||
| pmichaud | I need to re-review it and make sure it's sufficient to handle array interpolations in the various cases they occur (which is what has always tripped us up in the past) | 14:07 | |
| perlsyntax | thanks | ||
| bpetering | perlsyntax: you can also download Rakudo, a Perl 6 compiler - see rakudo.org/how-to-get-rakudo | ||
| jnthn | pmichaud: Yes, TimToady seemed to be advocating a change from how I understand we do things now. | ||
| pmichaud | I did see mention of a "interpolate me" flag, which is pretty close to what Rakudo had been doing originally | ||
| perlsyntax | i useing fedora | ||
| jnthn | pmichaud: Right now, we wrap stuff up in Perl6Scalar, as I understand it, to prevent flattening. | ||
| pmichaud | "what we do now" is really "my best guess based on insufficient spec" :) | 14:08 | |
| jnthn | Sure. :-) | ||
| bpetering | perlsyntax: if you want to experiment with the stuff in moritz's articles, try privmsging 'p6eval' this: "rakudo: say 4+5" etc | ||
| moritz_ | rakudo: say 4+5 | ||
| p6eval | rakudo c0ba84: OUTPUT«9» | 14:09 | |
| perlsyntax | i see | ||
| pmichaud | I've known (and complained) for months that rakudo's current implementation is wrong -- just needed clarification about what "right" is. Which you managed to elicit from TimToady++ last night, it appears. | ||
| so, +1 | |||
|
14:09
KyleHa joined
|
|||
| jnthn | pmichaud: Yes, I was surprised and happy that I managed to get those answers. | 14:10 | |
| Suddenly a lot of stuff cleared up for me. | |||
| bpetering | perlsyntax: and feel free to ask in this channel about pretty much anything - we're very friendly :) | ||
| pmichaud | actually, let me read it real quick and see what thoughts I have | ||
| perlsyntax | cool | ||
| jnthn | pmichaud: Today I'm switching us from the pos_args / named_args to just using :call_sig. | ||
| perlsyntax | I think i going to install perl 6. | 14:11 | |
| jnthn | pmichaud: I'm thinking I can hopefully land that today rather than it being drawn out. | ||
| pmichaud | jnthn: okay | ||
| jnthn | I'd kinda done other things with this switch in mind anyway. | ||
| pmichaud | but keep in mind we might be undoing it (temporarily) with the grammar switch | ||
| although it'll be good to have it done so that we know how to do it | 14:12 | ||
|
14:12
ejs joined
|
|||
| KyleHa | moritz_: Did you get that test failure thing figured out? | 14:12 | |
| jnthn | pmichaud: I guess one of my earlier tasks in the new grammar will be switching out signature/parameter handling to use the real binder. | ||
| perlsyntax | Do you do this in perl 6 /usr/bin/perl | ||
| pmichaud | jnthn: sure, but the timing of that depends on how quickly we can parse signatures | 14:13 | |
| bpetering | perlsyntax: generally no | ||
| moritz_ | KyleHa: no | ||
| pmichaud | (to a sufficient degree to use the new binder) | ||
| perlsyntax | oh really | ||
| jnthn | True. | ||
| I'll ahve to look at how you do it in NQP compared to how STD looks. | |||
| pmichaud | don't look yet | ||
| or, "don't accept what you see yet" | |||
| NQP is still not using contextuals for its markers | |||
| I expect that sometime later today or tomorrow | |||
| perlsyntax | i did this and that all to it? | 14:14 | |
| git clone git://github.com/rakudo/rakudo.git | |||
| that all i do. | |||
| moritz_ | then cd rakudo | ||
| perl Configure.pl --gen-parrot | |||
| make install | |||
| pmichaud | "less README" :-) | ||
| perlsyntax | thanks | 14:15 | |
| moritz_ | that will install the binary to parrot_install/bin/perl6 | ||
| jnthn | pmichaud: OK, will look later then :-) | ||
|
14:16
digitalise joined
|
|||
| jnthn | pmichaud: btw, I've not done any Rakudo days for a while. I can easily do 2 or maybe even 3 of them next week so we can really push on with this new grammar. | 14:16 | |
| pmichaud | jnthn: I expect the grammar to go very quickly, actually. | ||
| perlsyntax | would the tar be better i had a hard time compile it | ||
| pmichaud | if I look at the speed of nqp development over the past 48 hours, it's pretty straightforward | 14:17 | |
| jnthn | Sure, but we've got a lot of things to get working again. :-) | ||
| pmichaud | also, nqp has some nifty new features | ||
| moritz_ | perlsyntax: I don't think the tar is easier to compile in any way | ||
| bpetering | perlsyntax: what exact error message did you get? | ||
| jnthn | pmichaud: Plus you'll probably spend a while reprimanding me for not using the shiny new features properly. ;-) | ||
| pmichaud | oh, I doubt that. | ||
|
14:18
meppl joined
|
|||
| bpetering | perlsyntax: (you can use the channel paste thingo if you like: paste.lisp.org/new/perl6 ) | 14:18 | |
| pmichaud | I will say that I'm wanting to avoid $past<flag> as much as we can this time :) | ||
| with contextuals we shouldn't need it nearly as often. | |||
| perlsyntax | i try that then | ||
| moritz_ | bpetering++ # guiding newbies | ||
| pmichaud | but one of the niftiest features in NQP is that we can get direct access to PIR opcodes | ||
| lisppaste3 | perlsyntax pasted "untitled" at paste.lisp.org/display/89433 | 14:19 | |
| bpetering | bpetering is just barely not a newbie :-) | ||
| pmichaud | for example, to get the codepoint of a character in NQP | ||
| jnthn | pmichaud: Yes, I saw that go in and was like "oh wow" | ||
|
14:19
slavik joined
|
|||
| bpetering | perlsyntax: thank you! | 14:19 | |
| perlsyntax | welcome | ||
| moritz_ | perlsyntax: you need to install the 'svn' binary from subversion | 14:20 | |
| pmichaud | before: my $char = 'x'; my $code := Q:PIR { $P0 = find_lex '$char'; $S0 = $P0; $I0 = ord $S0; %r = box $I0 }; | ||
| perlsyntax | i see | ||
| jnthn | pmichaud: The other thing I wondered is: does that mean we have a nice way to handle pseudo-packages generally now? So we can do CALLER:: and friends... | ||
| perlsyntax | where i get that? | ||
| pmichaud | now: my $char = 'x'; my $code := PIR::ord($char); | ||
| jnthn | pmichaud: oh, nice!! | ||
| moritz_ | perlsyntax: most linux distributions bundle that already | ||
| perlsyntax: for example on debian you can use 'apt-get install subversion' | |||
| jnthn | pmichaud: We can haz that in Rakudo too, to beautify the setting? ;-) | 14:21 | |
| perlsyntax | ok | ||
| pmichaud | jnthn: if we're willing to allow a PIR:: pseudo-namespace in Rakudo, yes. | ||
| bpetering | perlsyntax: try "yum install subversion" | ||
| pmichaud | (I think yes) | ||
| perlsyntax | ok | ||
| pmichaud | the PIR:: feature itself doesn't do a lot for pseudo-packages on its own | ||
| bpetering | perlsyntax: then retry "perl Configure.pl --gen-parrot" | ||
| moritz_ | pmichaud: all-caps words are resevered in Perl 6 anyway, iirc | ||
| jnthn | pmichaud: I think so. Later on we can always so "only with a pragma" | 14:22 | |
| Just as for Q:PIR and the like. | |||
| perlsyntax | i will | ||
| pmichaud | Another nice thing is that if PIR::xxx(...) is used in an expression, it won't box/unbox to PMCs unless it has to | ||
| perlsyntax | i try to do a make install and get this | 14:26 | |
| make install make: *** No rule to make target `install'. Stop. | |||
| odd | |||
| moritz_ | perlsyntax: did parrot compile OK? | ||
| bpetering | perlsyntax: are you in the 'rakudo' directory? | ||
| perlsyntax | i cd the dir | 14:27 | |
| moritz_ | and was there a Makefile generated? | ||
| perlsyntax | i not sure. | ||
| moritz_ | ls | ||
| will tell you | |||
| perlsyntax | ok | ||
| jnthn | pmichaud: That's pretty nice to have too. :-) | ||
| perlsyntax | build Configure.pl CREDITS docs dynext lib LICENSE parrot perl6.pir README src t Test.pm tools | ||
| that all i see. | |||
| moritz_ | perlsyntax: that means that the Configure step wasn't successful | 14:28 | |
| perlsyntax | i see | ||
| moritz_ | perlsyntax: please try perl Configure.pl --gen-parrot again | ||
| perlsyntax | ok | ||
| moritz_ | and nopaste us the output | ||
| [particle] | nopaste is here: paste.lisp.org/new/perl6 | 14:29 | |
|
14:29
icwiener joined
|
|||
| lisppaste3 | perlsyntax pasted "perl 6" at paste.lisp.org/display/89434 | 14:30 | |
| moritz_ | perlsyntax: read the README again | 14:31 | |
| perlsyntax | i did that moritz | ||
| ok | |||
| moritz_ | perlsyntax: especially the part about the required software | ||
| pmichaud | 00:28 | ||
| TimToady | |||
| so either we have the bare object autoflatten and we suppress that, or we have the bare object never autoflatten, and insert code that flattens in list context | |||
| 00:28 | |||
| perlsyntax | i see | ||
| pmichaud | jnthn | ||
| So far as I understand, we do the latter in Rakudo now. | |||
| ...actually, Rakudo does the former. | |||
| bare objects autoflatten | |||
| references suppress the autoflattening. | 14:32 | ||
| perlsyntax | i try make still have the prob. | ||
| KyleHa | moritz_: I think I got your test fail fixed. Give it a try with the Test.pm I just pushed? | ||
| moritz_ | KyleHa: will do | ||
| bpetering | perlsyntax: "yum install gcc" | ||
| perlsyntax | ok | ||
| moritz_ | perlsyntax: did you install all the required software? | 14:33 | |
| a C compiler, make, subversion, icu etc.? | |||
| perlsyntax | oh my god i thought i had gcc. | ||
| thanks | 14:34 | ||
| bpetering | perlsyntax: then "yum install libicu", then try perl Configure.pl --gen-parrot again | ||
| perlsyntax | ok | ||
| pmichaud | jnthn: so, if I'm reading yesterday's conversation correctly, something like @foo will have a "flatten me" flag on it somehow, and it's syntactic | 14:35 | |
| KyleHa | moritz_: I think maybe is_deeply ought to have this on the end of its elsif ladder: elsif $got.WHAT eq $expected.WHAT { die "Don't know how to compare " ~ $got.WHAT; } | 14:36 | |
| moritz_ | KyleHa++ | ||
| dalek | kudo: f8fb41b | (Kyle Hasselbacher)++ | Test.pm: [Test.pm] Teach is_deeply how to compare Bool |
||
| moritz_ | KyleHa: not quite :-) | ||
| KyleHa: it should start with return False if $got.WHAT !=== $expected.WHAT | |||
|
14:36
nihiliad joined
|
|||
| perlsyntax | this perl 6 look cool | 14:36 | |
| moritz_ | KyleHa: I wanted to spectest that and see if it caused any failures, but got distracted | 14:37 | |
| KyleHa: or maybe it should just defer its work to infix:<eqv> | |||
| KyleHa | moritz_: Yes, I could see trusting in the mighty eqv. | ||
| bpetering | perlsyntax: it is cool - once you get it installed, play around a little and tell us what you think. | 14:38 | |
| perlsyntax | i will | ||
| are there doc for perl 6? | |||
| moritz_ | KyleHa: funnily I tried it with infix:<eqv> in JSON::Tiny and found that it lacked support for... *drumroll* Bool :-) | ||
| perlsyntax: perl6.org/documentation/ | |||
| perlsyntax | thanks | ||
| KyleHa | moritz_: Yeah, I noticed your commit earlier, so I was surprised that wasn't a fix. | 14:39 | |
| bpetering | perlsyntax: there's also szabgab.com/perl6.html | 14:40 | |
| KyleHa | The Bool thing popped out at me when I did this: for $got.kv -> $k,$v { is_deeply $v, $v, $k; } That was after I noticed that this failed: is_deeply $got, $got, 'self compare'; | ||
| moritz_ | ooh, that's the URL I was looking for the other day | ||
| we should add that that to perl6.org too | 14:41 | ||
| bpetering | moritz_: i would but you generally beat me to it :) | ||
| moritz_ | bpetering: I'll let you do it this time :-) | 14:42 | |
| bpetering | moritz_++ # socially constructive laziness | ||
|
14:43
kent\\n joined
|
|||
| dalek | p-rx: ff564c6 | pmichaud++ | build/PARROT_REVISION: Bump PARROT_REVISION. |
14:44 | |
| bpetering | perlsyntax: how are you doing? :) | ||
| pugs_svn | r28928 | bpetering++ | [perl6.org] doc - add link(s) to szabgab's Perl 6 stuff | 14:52 | |
| jnthn | pmichaud: Sorry, was afk for a bit... | 14:58 | |
|
14:59
eternaleye joined
|
|||
| jnthn | pmichaud: I thought that !flatten was the code that handled the flattening? | 14:59 | |
| pmichaud | jnthn: yes, but that says "I'm in list context", not "can I be flattened" | ||
| i.e., !flatten is more of a caller-side thing than the object being operated on | 15:00 | ||
| jnthn | Ah, OK. | ||
| pmichaud | oh, wait | ||
| maybe not | |||
| anyway, the way Rakudo currently keeps track of flattening vs non-flattening is that Lists/Arrays flatten and ObjectRefs don't. | |||
| or something like that | |||
|
15:00
ejs joined
|
|||
| pmichaud | I suspect we'll come up with a flattening ObjectRef | 15:01 | |
| so that given | |||
| jnthn | Yes, it seems that TimToady was suggesting it should be the other way around. | ||
| pmichaud | my @array = 1,2,3; | ||
| jnthn | Well, or just a prop in the metadata, like rw is. | ||
| pmichaud | my $array := @array | ||
| it can't be in the object itself | |||
| it has to be added to the object | |||
| jnthn | ah, yes :-| | ||
| pmichaud | anyway, the only way to tell the difference between (1, 2, 3, $array) and (1, 2, 3, @array) is by syntax | 15:02 | |
| jnthn | *nod* | ||
| pmichaud | which means that the second case has to have something special to say "I can be flattened" | ||
| jnthn | So yes, marking the second as "flatten me" like we mark things today inside an ObjectRef would seem to be a way. | 15:03 | |
|
15:03
mtve joined
|
|||
| jnthn | The \\@foo just takes that flatten me thingy away. | 15:03 | |
| pmichaud | right | ||
| of course, it gets a little tricky with | |||
| my $array := @array; | |||
| because $array needs to not have the 'flatten me' thingy that got generated by @array | |||
| jnthn | Yeah, we need to whip it off there too. | 15:04 | |
| [particle] | does flattening happen on binding? | ||
| moritz_ | maybe it should be part of the generated AST, not of the object? | ||
| that's where syntactic differences usually end up | 15:05 | ||
| pmichaud | moritz_: we can't always know at compile-time if the thing will be flattened or no | ||
| so it has to be a flag that says "I can be flattened" | |||
| moritz_ | example? | ||
| [particle] | and the op does the flattening | ||
| pmichaud | sub foo($a, $b, $c) { ... } | 15:06 | |
| sub foo($a, *@slurpy) { ... } | |||
| consider: | |||
| foo(1, @array) | |||
| foo(1, $array) | |||
| in the first case @array is flattened when placed in the slurpy | |||
| in the second case $array is never flattened | |||
| but with | 15:07 | ||
| sub bar($a, $b) { ... } | |||
| bar(1, @array) | |||
| the @array isn't flattened | |||
| i.e., we can't tell at compile time if the @array argument will be flattened | |||
| (unless we know something about the subroutine we're calling, which we don't always know) | |||
| moritz_ | pmichaud: but you can know at compile time if it might be flattened, in the appropriate context | 15:08 | |
| pmichaud | if you know context, yes. | ||
| I'm just saying that generated AST isn't sufficient. | |||
| this idea that "we know the context" is often non-existent in Perl 6 | |||
| moritz_ | well, the binder knows the context | ||
| because it knows the signature | 15:09 | ||
| pmichaud | sure, but that's runtime, by definition | ||
| moritz_ | ah, now I see where you're getting it | ||
| s/it/at/ | |||
| if it is marked in the AST, it has to propagate to the runtime too | 15:10 | ||
|
15:10
Psyche^ joined
|
|||
| moritz_ | which boils down to... an attribute in an object. | 15:10 | |
| pmichaud | essentially it has to be an attribute in a reference, or a special type of reference, though | 15:11 | |
| it can't be the object itself | |||
| it could be the container, I suppose | |||
| jnthn | *nod* | 15:12 | |
| moritz_ | makes sense | ||
| pmichaud | that would presume that we create | ||
| my @bar; | |||
| such that @bar is an objectref to an Array | |||
| moritz_ just feels he's at least half an hour behind pmichaud and jnthn, or more likely half a month | |||
| pmichaud | and the objectref has the "flatten me" marker on it | ||
| jnthn | pmichaud: Yes, sounds sane. | 15:13 | |
| pmichaud: We can even make it cheap and just store it in the PMC flags. | |||
| pmichaud: Heck, we could do that for rw too... | |||
| pmichaud | how many PMC flags are there? | ||
| ultimately most of our containers are going to have 'type' properties anyway, so I'm not too concerned about having the prophash | 15:14 | ||
| diakopter | moritz_: if you're behind half a month, I'm behind half a decade. | ||
| jnthn | pmichaud: We can have up to 7. ;-) | ||
| pmichaud | can we easily get to the pmc flags from PIR? | ||
| jnthn | I don't think there is a generic get_flags op. I was thinking of "is_rw" and "is_flattening" dynops perhaps. | 15:15 | |
| Since we have the metadata hash for types anyway though... | |||
| pmichaud | sounds like an optimization to be done later to me | ||
| jnthn | Yeah | ||
| Just use the metadata hash for now then. | 15:16 | ||
| pmichaud | omg | 15:17 | |
| ...I just used the new version of nqp to compile its own grammar and actions file and after fixing one bug..... it worked. | |||
| moritz_ | oh noez, pmichaud rans out of work! :-) | 15:18 | |
| [particle] | next! | ||
| pmichaud | oh, I still have to restructure the build process to do it by default | ||
| but I was somewhat expecting a fair bit of bug resolving before it worked. | |||
| I wonder if I built something wrong and I still have the old version. | 15:19 | ||
| pmichaud realcleans and starts over to check. | |||
| jnthn | wow :-) | 15:20 | |
| You don't even wanna know where I am... | |||
|
15:20
Lorn joined
|
|||
| jnthn shudders and hacks on | 15:20 | ||
| pmichaud | looks like it was built correctly | 15:22 | |
| coooooooool! | |||
| jnthn | Woohoo! | ||
| pmichaud++ | |||
| dalek | p-rx: 9f4cd36 | pmichaud++ | build/Makefile.in: Add 'nqp-self' target, to test-build a self-hosted copy of NQP. |
15:25 | |
| p-rx: 42e99a3 | pmichaud++ | src/NQP/ (2 files): [nqp]: Don't rely on module BEGIN semantics anymore. |
|||
| p-rx: 42ff618 | pmichaud++ | src/NQP/Actions.pm: [nqp]: Bootstrap intermediate step new version of nqp, move the private subs to the top so they work in both old and new versions of nqp. nqp-self target passes all nqp tests. |
|||
| p-rx: 72b2520 | pmichaud++ | build/Makefile.in: [nqp]: Self-generate actions for nqp-self target. |
|||
| pmichaud | okay, time for a short break, then time to rebuild the build system. When this is done, nqp-rx will be independent of both pge and nqp in Parrot. | ||
| KyleHa | rakudo: sub foo { say 'foo' }; undefine foo; foo(); | 15:27 | |
| p6eval | rakudo f8fb41: OUTPUT«foofoo» | ||
| KyleHa | rakudo: sub foo { say 'foo' }; undefine &foo; foo(); | ||
| p6eval | rakudo f8fb41: OUTPUT«invoke() not implemented in class 'Undef'in Main (file <unknown>, line <unknown>)» | 15:28 | |
| KyleHa | rakudo: sub foo { say 'foo'; }; undefine foo; foo; | 15:30 | |
| p6eval | rakudo f8fb41: OUTPUT«foofoo» | 15:31 | |
| jnthn emerges from IMCC | 15:32 | ||
| bpetering | huh? | ||
| KyleHa: do you understand that, or bug? | 15:33 | ||
| KyleHa | bpetering: I'm looking at this: rt.perl.org/rt3/Ticket/Display.html?id=69236 | ||
| bpetering | (getting 2xfoo) | ||
| KyleHa | I think I understand it, but I'm not sure what I want to test. | ||
| moritz_ | well | 15:34 | |
| undefine foo; calls foo() | |||
| which returns True | |||
| (the return value from say()) | |||
| that is undefined | 15:35 | ||
| (which should fail, because you can't undefine an object of a value type) | |||
| KyleHa | rakudo: undefine Bool::True | ||
| p6eval | rakudo f8fb41: ( no output ) | ||
| moritz_ | it should probably fail() though | 15:36 | |
| and not die | |||
| (not sure) | |||
| so I'd suggest to write a test as: | |||
| sub foo { my $x = [] } # return something you can safely undefine | 15:37 | ||
| undefine foo; | |||
| ok foo() ~~ Array | |||
|
15:38
brunov joined
|
|||
| moritz_ | std: sub foo { }; foo ~~ Array; | 15:39 | |
| p6eval | std 28928: OUTPUT«[31m===[0mSORRY![31m===[0mPreceding context expects a term, but found infix ~~ instead at /tmp/rGCBAFuAtO line 1:------> [32msub foo { }; foo ~~[33m⏏[31m Array;[0mFAILED 00:01 113m» | ||
| moritz_ | std++ | ||
| TimToady++ | |||
| bpetering | moritz++, good explanation. | 15:40 | |
| and testing advice | |||
| IllvilJa1 | (Ares 1-X made it at last!) | 15:41 | |
|
15:45
KyleHa joined,
am0c joined
|
|||
| KyleHa rattles his head. | 15:45 | ||
| am0c | OH HAI | ||
| jnthn | am0c: oh hai! | 15:46 | |
| am0c | jnthn: \\o | ||
|
15:47
pmurias joined
|
|||
| dalek | p-rx: d9b4687 | pmichaud++ | Configure.pl: Remove bogus note about Perl 6 spectests (Coke++). |
15:48 | |
| am0c | dinner& | ||
|
15:49
alexn_org joined
|
|||
| pmichaud | lunchtime. | 15:52 | |
| KyleHa | I'm kind of shocked by this: gist.github.com/220555 | ||
| I never thought I'd see 'ok 1' fail. | |||
| moritz_ | KyleHa: undefine &foo; should fail already | 15:54 | |
| KyleHa | I can't undefine &a_sub ? Should that die, then, or just not do anything? | ||
| moritz_ | probably die | 15:55 | |
| I suspect that undefining Bool::True makes Test.pm barf | |||
| jnthn | lol | 15:57 | |
| KyleHa | Yeah, 'if 1' still works, so it probably is in Test.pm somewheres. | ||
| moritz_ | rakudo: undefine Bool::True; say ?1; | ||
| p6eval | rakudo f8fb41: OUTPUT«Use of uninitialized value» | ||
| moritz_ | KyleHa: yes, it coerces to Bool somewhere :-) | 15:58 | |
| KyleHa | rakudo: undefine Bool::True; say 'truth' if 1; | ||
| quietfanatic | Well, you undefined Bool::True. | ||
| p6eval | rakudo f8fb41: OUTPUT«truth» | ||
| moritz_ | rakudo: undefine Bool::True; say 'truth' if ?1; | ||
| p6eval | rakudo f8fb41: ( no output ) | ||
| KyleHa | Ha! | ||
| pugs_svn | r28929 | pmichaud++ | [pm.txt]: Add another question for TimToady++ and others. | 15:59 | |
| dalek | p-rx: 36a6064 | pmichaud++ | (5 files): [bootstrap]: Add stage0 versions of HLLCompiler, NQP. |
||
|
16:01
astrojp joined
16:02
justatheory joined,
IllvilJa joined
|
|||
| KyleHa | S29 says "undefine -- see S32-setting-library/Scalar.pod", which does not exist. | 16:04 | |
| Tene | So, I remember hearing stuff about how POE will be superfluous in Perl 6, because the builtin threading/event model will be sufficient, or something... | 16:05 | |
| moritz_ | that would be great, but somewho I only believe it when I see it :-) | ||
| Tene: also note that POE is cooperative multitasking, not threading | 16:06 | ||
| Tene: which means I believe it even less :-) | |||
| Tene | :) | 16:07 | |
| TimToady | only people who believe it before they see it are qualified to implement it :) | ||
| moritz_ | one of the huge differences is that in POE you don't need to lock anything | 16:08 | |
| because nobody will ever interrupt what you're doing | |||
| TimToady | at a low level, I'd like to think we can do something Erlangish | 16:10 | |
| where everything is event queues rather than locks | |||
| moritz_ comes from Erlangen, but can't speak Erlangish | |||
| TimToady | this probably entails enforcing some isolation between the two ends of a feed operator | 16:11 | |
| however, the notion of handling only one event at a time says you can't pull more than one item off your incoming lazy list, which is peculiar from a P6 point of view | 16:13 | ||
| PerlJam | Tene: if Perl 6 does threading right, POE will be less needed IMHO. But superflous is probably a bit of an overstatement :) | 16:14 | |
| TimToady | passing objects from one event handler to another doesn't need locking if the objects are immutable | 16:17 | |
| and there are ways of making mutable objects effectively immutable | |||
| COW, or hand-off of ownership | |||
| within those constraints, locking between event handlers is handled entirely by incoming event queues | 16:18 | ||
| it's only when two different threads want the same mutable object that we run into locking issues | 16:19 | ||
| (which is a large part of why we're moving awy from temp variables toward context variables) | |||
| it's a nice situation to be in when your lexical scoping tells you whether locking is necessary or not | 16:20 | ||
| or STM, or whatever | 16:21 | ||
|
16:22
zaphar_ps joined
16:25
alester_ joined
|
|||
| pugs_svn | r28930 | kyle++ | [t/spec] Tests inspired by IRC: irclog.perlgeek.de/perl6/2009-10-28#i_1654146 | 16:29 | |
| KyleHa | moritz_: Whenever you could have a look at that, I'd be grateful. | ||
| nom & | |||
|
16:29
meppl joined
|
|||
| moritz_ | KyleHa: looks good. For bonus points you can also try to call def after its usage attempt | 16:31 | |
| masak | jnthn: so, are you done using the branch 'pccupdate'? | 16:37 | |
| jnthn | masak: Yes. | 16:38 | |
| masak | can I delete it from github? | ||
| jnthn | masak: Yes, I actually don't know how to. | ||
| So please do it and then show me how you did it. :-) | |||
| masak | 'git push origin :pccupdate' | ||
| jnthn | A colon deletes it? | 16:39 | |
| masak | aye. | ||
| jnthn | That's... | ||
| ...so git. | |||
| masak | the syntax is actually a special case of a more general syntax. | ||
| I also thought it was zany until I found this out. | |||
| jnthn | Ah, ok | ||
| masak | ah. the general syntax is <src>:<dst>, meaning update <dst> with the current state of <src>. | 16:42 | |
| remove <src>, and it means 'delete'. | |||
|
16:42
cdarroch joined
|
|||
| jnthn | Ah, that's not so odd after all. | 16:43 | |
| PerlJam | jnthn: git is very much like perl in spirit :) | ||
| masak | that's probably why the Python people went with mercurial. :P | 16:44 | |
| jnthn | I think I'm getting quite close to having got us switched over to using :call_sig. | ||
| About to run a spectest, but I've fixed up the places I expected would be pain points. | |||
| This means a few things, not least that we're actually now passing around and dealing with capture-ish thingies. | 16:45 | ||
| Tene | more features? delicious features? faster? | ||
|
16:46
fax joined
|
|||
| TimToady | pmichaud: I wonder if we should reserve a different namespace for impl-dependencies than just CAPS | 16:46 | |
| given that implementations are pragmatic in nature, perhaps pir::ord would be more the thing | 16:47 | ||
| jnthn | Tene: Bit faster, cleaner code, was a pre-req for nested signatures. | ||
| Tene | TimToady: last I asked, he listed correspondence to Q:PIR as part of his motivation for CAPS | ||
| TimToady | which seems a weak argument compared to namespace purity | 16:48 | |
| PerlJam | "purity"? | 16:49 | |
| TimToady | collision avoidance | ||
| PerlJam | Are you saying that Perl might have need of the PIR namespace for something else? | 16:50 | |
| pmichaud | TimToady: I'm definitely open to alternatives to PIR:: | 16:51 | |
| jnthn | Well, when somebody writes the Perl 6 In Ruby compiler, for example. ;-) | ||
| masak | someone wants Perl 6 grammars for Ruby: stackoverflow.com/questions/1638347...r-for-ruby | ||
| pmichaud | I figured that since CALLER:: and OUTER:: and the like are somewhat specialized namespaces, PIR:: could fall nicely into that group | ||
| masak | my guess is that if there were such a thing, we'd have heard about it. | 16:52 | |
| Tene | PerlJam: he's saying that it might be nice to reserve a namespace for impl-dependant things, to avoid code that clashes in one impl, but not on another, for example. | ||
| TimToady | yes, but OUTER:: and CALLER:: are defined by Perl 6, not by the impl | ||
| pmichaud | originally we were also looking at possibly a specialized sigil | ||
| Tene | masak: We can do that in Cardinal, once Cardinal is less bad. | ||
| TimToady | so was just suggesting using the pragma namespace instead | ||
| PerlJam | oh, I see. | ||
| PerlJam is little slow today | |||
| pmichaud | I'm afraid I don't quite follow "pragma namespace" | 16:53 | |
| masak | Tene: maybe consider writing that as a reply on the SO page? | ||
| TimToady | all lowercase | ||
| pmichaud | ahhh | ||
| I'm fine with it being all lowercase, if you think that's better. | |||
| should I do the same with Q:pir instead of Q:PIR ? | |||
| TimToady | the original definition of pragmas in Ada was for impl-dependencies, mostly | 16:54 | |
| Tene | pmichaud: ETA for you being comfortable with me migrating Cardinal to nqp-rx? | ||
| TimToady | though Perl 5 ended up with some "standard pragmas" | ||
| pmichaud | Tene: I'm working on bootstrap now; then we probably need a 'make install' target | ||
| then I think it's ready for people to start migrating | |||
| Tene | Great, okay. | ||
| I'm not quite available until next week anyway. :) | 16:55 | ||
| pmichaud | at the moment it's passing all of the code-based tests from the old nqp suite | ||
| TimToady | don't care one way or the other about Q:PIR | ||
| pmichaud | okay | ||
| I'll switch to pir:: instead | |||
| Tene | masak: do I need to register an account on SO? | ||
| masak | Tene: beats me. I wouldn't be surprised, though. | ||
| pmichaud | if you have other such suggestions I'm eager to hear them :) | ||
| masak | their system kinda hinges on people having accounts. | 16:56 | |
| jnthn does a spectest on the switch to :call_sig | 16:57 | ||
| pmichaud | Tene: also, note that I'm planning to rewrite HLLCompiler in NQP | 16:58 | |
| moritz_ | Tene: any Open-ID provider will do for SO | ||
| pmichaud | I'm also planning to change the standard compiler framework to be all-NQP instead of a PIR/NQP mix | ||
| (i.e., when someone writes their MyLang::Compiler object, they do it in NQP instead of PIR) | 16:59 | ||
| pugs_svn | r28931 | pmichaud++ | [pm.txt]: Another Perl 6 syntax question. | 17:03 | |
| r28931 | Pm-6: Is there a syntax that allows a (trusted) routine to access | |||
| r28931 | the private attributes of another object without going through | |||
| r28931 | an accessor? For example, if object $b has a private attribute | |||
| r28931 | of "$!xyz", is there a syntax for me to get to that attribute? | |||
| dalek | p-rx: dc737ba | pmichaud++ | (3 files): [nqp]: Per suggestion from TimToady++, switch PIR::pirop to pir::pirop . |
17:04 | |
| Tene | masak: I posted an answer. | ||
| masak | Tene++ | ||
| jnthn | pmichaud: I was about to say "trusts", but yu already figured that end of it. :-) | ||
| pmichaud | jnthn: sure, but I want to know the syntax for the attribute in that case. | 17:05 | |
|
17:05
ShaneC joined
|
|||
| jnthn | pmichaud: Right, I'm not sure what that looks like. | 17:06 | |
| I'd like to know too. :-) | |||
| pmichaud | the question came up a few months before, but iirc wasn't ever resolved | 17:07 | |
| and, more to the point, NQP would like to use it | |||
| jnthn | Ah. | ||
| pmichaud | since I'm about to add "has $!foo" to NQP class declarations. | ||
| jnthn | Oooh. | 17:08 | |
| Perl6::Compiler::Signature will like you for that. :-) | |||
|
17:08
cotto_work joined
|
|||
| pmichaud | afk for a bit | 17:08 | |
| pugs_svn | r28932 | lwall++ | [S12] clarify that private accessors are already the most primitive form (Pm-6) | 17:15 | |
|
17:20
ejs joined
|
|||
| pugs_svn | r28933 | lwall++ | [pm.txt] preliminary answers to six questions | 17:22 | |
| r28934 | lwall++ | [STD] unify noun into term | 17:23 | ||
| r28935 | lwall++ | [S12] typo | 17:25 | ||
|
17:26
stephenlb joined
17:27
payload joined
17:29
icwiener_ joined
|
|||
| pmichaud | yay, answers! | 17:29 | |
| KyleHa | moritz_: Thanks for having a look! | ||
| pugs_svn | r28936 | kyle++ | [t/spec] Test suggested by moritz++ | ||
| KyleHa | moritz_++ # Checking over the crud I commit. | 17:30 | |
| pmichaud | TimToady: (Pm-4, .ast) Currently S05 says that .ast returns the matched text. Fossil? | ||
| S05:2434 | |||
| TimToady: (Pm-6, private attributes of other objects) -- r28932 doesn't directly answer my question (at least I don't see the answer). "No simpler notation is needed for accessing another object's private attributes" -- does this mean there is no such notation, or ... ? | 17:34 | ||
| ...because I have places where I could use such a notation, and I don't know what it is. :-) | |||
| TimToady | that is the simple notation | ||
| pmichaud | I'm confused | ||
| if I have an object $b | |||
| and I want to access the '$!foo' attribute of $b | 17:35 | ||
| how do I do it? | |||
| TimToady | $b!TrustsMe::foo | ||
| pmichaud | ...thinking | ||
| oh, I see | |||
| so if $b is an instance of class XYZ | 17:36 | ||
| it would be | |||
| $b!XYZ::foo | |||
| TimToady | yes, that's the idea | ||
| pmichaud | got it | ||
| perfect, and thanks. | |||
| jnthn | how do we distinguish those and private methods? | ||
| TimToady | well, clunky, so maybe not perfect, but it'll do :) | 17:37 | |
| moritz_ | and it doesn't include the sigil | ||
| pmichaud | private attributes / accessors often don't include the sigil | ||
| moritz_ | what about using $b::XYZ::@foo for the attribute, and $b::XYZ::foo for the method? | ||
| pmichaud | not ::, though | 17:38 | |
| should be . or ! | |||
| moritz_ | erm, yes | ||
| $b!XYZ::@foo for the attrib | |||
| TimToady | $b's @!foo # :) | ||
| KyleHa | Gesundheit. | ||
| pmichaud | lol | ||
| PerlJam | moritz_: why not require () for the method if they need distinguishing? | 17:41 | |
| moritz_ | PerlJam: because that's not how we normally do it | ||
| pugs_svn | r28937 | pmichaud++ | [pm.txt]: Mark questions as being answered, along with some additional | 17:43 | |
| r28937 | commentary and clarification from Pm. | |||
|
17:43
pyrimidine joined
|
|||
| PerlJam never has had a good sense of "normal" for Perl 6 | 17:43 | ||
| pmichaud | "normal" is whatever TimToady++ says it is, but only at the moment it's asked | 17:44 | |
| I call it the Perl 6 Heisenberg Uncertainty Principle. You can know the answer very precisely but only for an instant, or you can know the answer vaguely for a longer period of time, but you can't know the answer precisely for a longer period of time. | 17:45 | ||
| :-) | |||
| PerlJam | pmichaud: so ... what are the specs? | 17:46 | |
| they strike the balance between vague and precise? | |||
| KyleHa | If I get the $!foo from $b of type X with $b!X::foo, how then do I get the @!foo from $b ? | ||
| moritz_ | sometimes ;-) | ||
| KyleHa: there can't be $!foo and @!foo in the same class | |||
| pugs_svn | r28938 | lwall++ | [S05] decouple $() from .ast so we can use .ast as boolean | 17:47 | |
| KyleHa | moritz_: Oh. But I can have $foo and @foo in the same scope. Trippy. | ||
| pmichaud | PerlJam: the specs are just snapshots of the wave function in various states of being collapsed | ||
| KyleHa | pmichaud: I was already confused before the comparison to quantum physics, which is also confusing. | 17:48 | |
| PerlJam needs to get some TimToady-colored glasses for the next time he looks at the specs. | |||
| pmichaud | PerlJam: those would be "TimToady-colored specs", I guess. | ||
| PerlJam | sure, go for the *obvious* puns ;) | 17:49 | |
| obra_ | seen TimToady | ||
| TimToady | I dunno, I'm kind of a light tan color... | ||
| obra_ grins | |||
| TimToady | obra_: is the concern that there are numeric Unicode points that don't work as digits? | 17:50 | |
| obra_ | heya. Yves Orton, who's been doing most of the regex engine internals hackng has a fairly well-reasoned writeup to p5p. | ||
| TimToady | \\d excludes things like roman numerals | ||
| KyleHa | I think I should go do some Perl 5 work. After a swim in the Perl 6 fluid, I need some concrete. | ||
| obra_ | \\d matching non-ascii may break a whole slew of applications | ||
| let me get a url for the post | |||
| TimToady | Um, it's been matching non-ascii for quite a while now, I though. | ||
| obra_ | since I _know_ I am a lossy filter for this stuff. | 17:51 | |
| TimToady | *thought | ||
| PerlJam | yeah, I thought so too | ||
| TimToady | in fact, STD is kinda depending on that | ||
| obra_ | nntp.perl.org isn't up to date | ||
| -> nopaste | |||
| fsck.com/~jesse/tmp/matching.txt | 17:53 | ||
| TimToady | std: say ໔໒ | 17:54 | |
| p6eval | std 28938: OUTPUT«ok 00:01 105m» | ||
| TimToady | it's fine to say 42 in Laotian | ||
|
17:55
am0c joined
|
|||
| obra_ is attempting to lure yves here. | 17:55 | ||
|
17:55
dmq joined
|
|||
| obra_ | hello, dmq! | 17:55 | |
| dmq | hiya | ||
| PerlJam | greets dmq | 17:56 | |
| obra_ | I was just showing TimToady your message of this morning about \\d matching | ||
| I know that I don't do your concerns justice. | |||
| dmq | just before we start, wanted to make it clear im sorry for any controversy this caused, the intention was to fix bugs and restore sanity in a tricky situation, not cause community upheaval. | ||
| PerlJam | dmq: that's okay, we'll just blame obra ;) | 17:57 | |
| moritz_ | lol | ||
| obra_ | <- blame magnet | ||
| I'm good at that. and happy to do it. | 17:58 | ||
| dmq | the basic problem is the inconsistancies between semantics of "latin-1" (which in the conversation is just alabel for "not unicode") and unicode strings. | ||
| this has many consequences although actually works surprisingly well as we all know. | |||
| however there are actually a lot of bugs related to this. | |||
| TimToady | sure, I understand the history, but to my mind, the correct way forward it get better typing on the ambiguous 8-bit strings, not to make Unicode optional in a 1990s sense | 18:00 | |
| moritz_ | I can see the impedance mis-match between what \\d+ and numification | ||
| but the question is which to fix | |||
| dmq | and the only way to sort it out are 1: serious rewrite to the regex engine - and make a lot of things really dog slow 2: introduce a new modifiers (yeah ugly, but what can you do) to allow people to get whichever set of semantics they want, including the current somtimes borken ones. | ||
| TimToady | all valid Unicode \\d have a digit value associated with that is easily tranlatable to 0-9 digits for numification | 18:01 | |
| dmq | IMO 2 isnt too controversal. At least I didnt think. | ||
| there are even precendents elsewhere. | |||
| PerlJam | dmq: does #1 allow for pragmata to modulate the behavior? | ||
| dmq | and it actually allows us to handle a case that wasnt handled properly. | ||
| #2 does. | |||
| dalek | p-rx: 92cc0bf | pmichaud++ | src/ (4 files): [nqp]: Unify <noun> with <term>, per latest STD.pm changes. TimToady++ |
18:02 | |
| dmq | that is not true | ||
| btw | |||
| TimToady | |||
| TimToady | I don't mind pragmas, but I'd really like to see the default bias towards Unicode semantics consistently | ||
| dmq | the unicode 1/4 and 1/2 and stuff are "digits" | ||
| TimToady | they are not supposed to be matched by \\d | ||
| dmq | \\d matches IsDigit | 18:03 | |
| unicode decides what goes in there. | |||
| TimToady | they are only supposed to match things that have a 0-9 mapping | ||
| that has always been the intent | |||
| dmq | well, thats not what happens. | ||
| i cant speak to supposed. | |||
| that is part of the problem. | 18:04 | ||
| unicode can release a new version and new digits show up. | |||
| pmichaud | according to my unicode tables, 1/2 isn't IsDigit | ||
| www.fileformat.info/info/unicode/ch.../index.htm | |||
| dmq | well, im pretty sure last i checked some of them are. | 18:05 | |
| maybe i misremember. | |||
| TimToady | 1/2 is No, not Nd, and \\d matches Nd | ||
| iirc | |||
| obra_ needs to vanish back to the client. Good luck getting this sorted out, everybody. (Also, thanks!) | 18:06 | ||
| dmq | nevertheless we dont support converting such codepoints to numbers during numification, and people use \\d+ to match ids IMO a gazzilion times more than they use it to match any other type of digit together. | ||
| TimToady | yes, but that's kind of a looking-under-the-lamppost argument | ||
| dmq | anyway, to be honest i dont really care THAT much about \\d matching only [0-9] | ||
| TimToady | we're trying to enable people of other cultures to work in Perl too | ||
| dmq | so long as i can enabled it with /a | ||
| which i dont think is controversial. | 18:07 | ||
| jnthn | Why /a? a for...? | ||
| dmq | im unconvinced that having multiple ways to represent numerals for computing processing is wise. | ||
| because /p is taken | |||
| jnthn just thought "a for ascii"... | |||
| TimToady | a for ASCII presumably | ||
| dmq | so "a" for ascii. | ||
| i would have preferred /p for "perl" | |||
| because id like \\s to have the perl definition under /a | 18:08 | ||
| not the unicode one. | |||
| jnthn | Oh, so /a = \\d is only [0-9] | ||
| dmq | yes | ||
| jnthn | I'd got it backwards, sorry. | ||
| dmq | really actually as far as i understand, unless timtoady doesnt like /a and (?a: ...) | ||
| TimToady | as long as the default stays Unicode, I'm happy | 18:09 | |
| dmq | the only controversial thing at this point is a) what the default /[tlau] modifier would be in 5.12, b) whether \\d should ALWAYS match [0-9] (which I and many other thing it should) | ||
| the defautl is likely to stay "t" for traditional. | 18:10 | ||
| TimToady | huh? | ||
| dmq | which is "decide based on the utf8 flag" | ||
| TimToady | in what sense is Unicode traditional? | ||
| PerlJam | dmq: steal /o back (for "old") :) | ||
| Tene | [0-9] isn't that much worse to type than \\d, if that's what you really want, btw. | ||
| dmq | since that breaks the least. | ||
| moritz_ | call it /b for brainded # SCNR | ||
| PerlJam hates the perl5 /o for some reason | |||
| pmichaud | /u for "US-Centric" | ||
| TimToady | how about /7 for ASCII and /8 for Latin-1 :) | ||
| dmq | id argue that about 98% of the time people have used \\d they mean [0-9], i dont think its well huffman coded to force them. | 18:11 | |
| and the decide based on the utf8ness of the string is dangerous. | |||
|
18:11
astrojp left
|
|||
| Tene | Eh, sure. | 18:11 | |
| dmq | people expect to be able to detaint page args with /^\\d+$/ | ||
| PerlJam | dmq: how much of that 98% of the time are they mucking with unicode documents? | ||
| TimToady | and how often to people accidentally get Bengali in their input? | ||
| dmq | you could probably have fun breaking lots and lots of pages by slipping in other digits in their ids. | 18:12 | |
| TimToady | the huffman argument cuts both ways | ||
|
18:12
astrojp joined
|
|||
| dmq | i dont think it being a unicode document matters at all. | 18:12 | |
| personally. | |||
| i think people would be really surprised to find that id=<thai-digits> | 18:13 | ||
| passes a /^\\d+$/ check | |||
| TimToady | it may take ten or twenty years, but the world will settle down on consistent Unicode semantics eventually | ||
| dmq | and with perl switching behaviour on a dime.... | ||
| TimToady | we'll do much better to be there first rather than last | ||
| dmq | well | ||
| TimToady | Perl 6 will no switch behavior on a dime | ||
| *not | |||
| Unicode is mandatory from the getgo | 18:14 | ||
| Tene | Could the pragma for matching unicode with \\d also enable numification of unicode digits? | ||
| dmq | so /u will give consistant unicode behaviour. /a will give consistant asciss behaviour, /t will given "choose based on the string" and /l will give "use locale;" behaviour. | ||
| TimToady | but that also implies good typing, which Perl 5 will have trouble keeping up with | ||
| dmq | imo if Perl6 includes non computer ordinals in \\d it is a mistake. | ||
| anyway, i guess your position is clear, you want /t with unicode \\d. | 18:15 | ||
| masak | non computer ordinals? is that another name for other people's digits? | ||
| PerlJam | dmq: careful, TimToady can see around corners (according to another semi-famous guy named Tim) :-) | ||
| TimToady | you make it sound like I want /t :) | 18:16 | |
| dalek | kudo: 6a43a35 | jonathan++ | (9 files): Switch to using :call_sig for argument handling. Wins back a little performance and gets us positioned almost ready to implement nested sigs. whiteknight++ for :call_sig Parrot work. Please note: PARROT_REVISION bumped. |
||
| dmq | well /u will instantly break a lot of code. | ||
| TimToady | I think a plethora of flags is more confusing than just settling on Unicode | ||
| moritz_ | PerlJam: is that a guy who's last name is a valid identifier in Perl 6, but not in Perl 5? ;-) | ||
| dmq | although id be happy with /u and an ascii \\d | ||
| PerlJam | moritz_: heh | ||
| dmq | masak: perlsonally i dont buy the "other peoples digits" bit. | ||
| masak | dmq: you don't believe in Bengali digits? | 18:17 | |
| moritz_ | dmq: I've seen Big5 encoded emails with phone numbers in full-width digits | ||
| dmq | i do believe in bengali digits. and if you show me an aton written to handle them then fine. | ||
| TimToady | let me repeat, the proper place to fix Perl 5's string problems are by getting better buf vs str distinctions on currently ambiguous strings | ||
| not by adding more flags to tell it to guess one way or another | |||
| can I use tr///? | 18:18 | ||
| dmq | for every possible mapping? | ||
| go ahead | |||
| and then explain then semantics for mixes | |||
| what do you do with 123<thaidigt><1 subscript> | 18:19 | ||
| do you convert that into 12341? | |||
| pmichaud | 1 subscript doesn't match \\d | ||
| TimToady | the translations are sitting right there in one of the columns of UnicodeData.txt; how hard can it be? | ||
| dmq | for mixed types? | ||
| PerlJam | dmq: matching the digits doesn't mean they have to be converted into one form or another. | 18:20 | |
| (except for the purposed of the match) | |||
| TimToady | if by mixed you mean your thai/subscript example, then you just tr/// them all to 0-9 and then aton it | ||
| dmq | most of the time in perl people are matching digits to parse out numbers, ids, etc. | ||
| when they arent they have an out \\p{IsDigit} | 18:21 | ||
| or friends. | |||
| TimToady | yes, and I'd like the Bengalis to be able to program nicely in Perl too | ||
| pmichaud | when people want to match 0-9, use [0-9] | ||
| that seems fairly simple | |||
| if \\w matches more than [A-Za-z], then it makes sense that \\d matches more than [0-9] | 18:22 | ||
| dmq | but badly huffman coded | ||
| TimToady | wrong wrong wrong wrong wrong | ||
| dmq | and frankly backwards incompatible. | ||
| diakopter counts an odd number of 'wrongs' | |||
| TimToady | cultural imperialism should be dehuffmanized | ||
| dmq | i dont agree that standards are cultural imperialism. | 18:23 | |
| pmichaud | depends on the origin of the standard, hmm? | ||
| TimToady | they never seem culturally imperialistic to the cultural imperialists :) | ||
| dmq | yes, it apparently only seems to matter if it comes from english/american culture actually pmichaud. | ||
| moritz_ | dmq: you might think differently if your name couldn't be written in that standard (if by standard you mean ASCII) | 18:24 | |
| TimToady | Oh, other cultures are generally more culturally imperialistic even than western culture, but we have the chance to do something about it, and they don't | ||
|
18:24
clsn joined
|
|||
| dmq | considering i have a french name, and grew up in a culture that uses text that cant be expressed in ascii-7 bit actually moritz you would be wrong. | 18:24 | |
| is it cultural imperialism that 0 meridian is in grenwhich? | 18:25 | ||
| moritz_ | dmq: most french names can still be written in ASCII with very little loss of information | ||
| dmq | is it cultural imperialism to ask that there be a common set of digits for numeric information exchange? | ||
| i dont think so. | |||
| TimToady | well, it does make the Australians type more when they want to put in their longitude into their GPS | ||
| so vaguely, yes | 18:26 | ||
| these aren't black and white issues | |||
| dmq | my point is if you pick a standard you either pick something nobody uses so everybody is equally disadvantaged, or you just the most common form and move on. | ||
| TimToady | Unicode is a standard. Let's move on. | 18:27 | |
| dmq | sure its a standard | ||
| by unicode doesnt dictate the mapping of \\d does it? | |||
| TimToady | how many times to I have to point to that column in UnicodeData.txt that does just that? | ||
| those are the digits in the new world | 18:28 | ||
|
18:28
IllvilJa joined
|
|||
| clsn | The question is, should the "digit" feature of Unicode coincide with Perl's \\d ? It would seem to me that to do otherwise would require some explaining. | 18:28 | |
| diakopter | purl, \\d is UnicodeData.txt | ||
| PerlJam | dmq: What's your plan for \\s and \\w in relation to \\d? \\s will match unicode whitespace but \\d will only match ascii digits? Is that correct? | 18:29 | |
| Tene | ENOPURL | ||
| masak | diakopter: no purl, thankfully. | ||
| dmq | under /t nothing changes from 5.8/5.10 | 18:30 | |
| under /u all unicode semantics. | |||
| under /l same semantics as we currently have under use locale. | |||
| under /a all ascii semantics. | |||
| this is actually an improvement as use locale didnt work properly before. | 18:31 | ||
| PerlJam | dmq: and /t is the default? | ||
| dmq | yes | ||
|
18:31
abra joined
|
|||
| clsn | Mm. That would cover the "explaining" I was mentioning. | 18:31 | |
| obra_ | dmq: What's your opinion on 'use 5.12' turning on /u | ||
| TimToady | those still look like flags to tell it how to guess, rather than fixing the problem of not knowing what the numbers in buffer mean | ||
| dmq | no unless \\d match [0-9]. | ||
| making binary data match unicode string points given the way utf8 upgrading works is IMO not a good plan. | 18:32 | ||
| how to guess? | 18:33 | ||
| it basically just "what should \\d mean" | |||
| what should "\\w mean" | |||
| diakopter | what's the flag for ASN.1 mode | ||
| dmq | and should \\x{DF} match /ss/i | ||
| or not | |||
| instead of the current schizophrenic "it depends on the string being utf8_on" behaviour. | |||
| not mention a whole host of other problems with case folding rules differing from the "classic perl" rules that apply to non utf8 strings. | 18:34 | ||
| for instance what should happen to codepoints in the 128..255 range? | 18:35 | ||
| TimToady | that's my point, you need a way to disambiguate that upgrade in the language, not a bunch of bandaids applied after the fact | ||
| dmq | currently if the string is not utf8 and the pattern is not utf8, and does not explicitly use unicode style constructs then no codepoints in that range match "A" case insenitively. | 18:36 | |
| in either are utf8 they do. | |||
|
18:36
abra_ joined
|
|||
| dmq | TimToady: are you talking about how Perl6 will do it? | 18:36 | |
| or proposing how perl5 should do it. | |||
| diakopter | yes? | 18:37 | |
| dmq | or both? | ||
| if we do not default to /t we break code for sure. | |||
| somewhere. | |||
| moritz_ | that's why it's a new major release of perl | 18:38 | |
| dmq | Look, i tried changing the behaviour both ways. | 18:39 | |
| TimToady | the problem cannot actually be fixed without breaking something; sane deprecation cycles would help, a little | ||
| dmq | too much breaks. | ||
| yes | |||
| PerlJam | has perl5 started doing regular releases? | ||
| dmq | i agree. the only way to be able to consistent behaviour imo is to introduce flags | ||
| sorry, the only way i see to be able to have a way to have consistent behaviour without causing carnage is to make it "opt in" and that basically means flags. | 18:40 | ||
| pmichaud | "opt in" could be called "upgrade to major version", vwiw | ||
| *fwiw | |||
| dmq | no | ||
| opt in means: you have to explicitly change your code to see the change. | 18:41 | ||
| TimToady | the Problem of Perl 5 in a nutshell | ||
| and Why We Have Perl 6 | |||
| Tene | that is, could be called "upgrade to major version and indicate in your lexical scope that you're using it." | ||
| dmq | thats a better description. | 18:42 | |
| Tene | that is, "use 5.12" | ||
| TimToady | the problem with 'use 5.12" is that it's not exact | ||
| dmq | no, in this case its /X | ||
| TimToady | you need something more like "use exactly 5.10.2" | ||
| dmq | the only question is whether use 5.12 implies a differnt X than without. | ||
| and i personally dont think it should but dont really care. | 18:43 | ||
| TimToady | (which is why version requests are exact in Perl 6, btw) | ||
| pmichaud disappears for a while to focus on bootstrap issues. | |||
| dmq | so long as i can write /a and tell all my colleagues to write /a im happy. | ||
| or /u | |||
| depending. | |||
| TimToady | .o(features add, but cruft multiplies) | 18:44 | |
| dmq | there is of course precedence for this in other languages. | 18:45 | |
| and packages, as far as i recall. | |||
| but unless you have a better option to restoring sanity to perl5 on this level i think we have to make to do. | |||
|
18:46
abra joined
18:48
abra joined
|
|||
| avar | TimToady: I think what you're sidestepping here a bit is that \\d as it's defined today essentially means that it's useless to everyone as a validation tool unless you happen to be implementing an application to print out every digit character in Unicode. | 18:53 | |
| Even if I'm working with Thai characters I usually don't want to accept Bengali, or dozens of other languages that use [^0-9] for their numbers. | |||
| And I've never seen a use of \\d where the author didn't really mean [0-9]. Because it's so brief people use it instead of [0-9] when that's what they really mean, sometimes inserting invalid data into databases as a result. | 18:54 | ||
| Honestly I think the proper huffmanization for \\d as it is in Perl 6 is <YES_AGAINST_ALL_ODDS_I_ACTUALLY_WOULD_LIKE_TO_ACCEPT_EVERY_DIGIT_CHARACTER_IN_UNICODE_REALLY> | |||
| PerlJam | avar: If you're working with Thai characters and you don't want to match Bengali, you aren't using \\d anyway. | 18:55 | |
| avar | PerlJam: Why wouldn't I? If the string is UTF-8 \\d will match my Thai digits. | 18:56 | |
| PerlJam | avar: and your Bengali digits too. | ||
| dmq | so then what purpose is there in using \\d for this? | ||
| why is it so bad to force people to use \\pNd | 18:57 | ||
| or \\p{IsDigit} | |||
| PerlJam | dmq: or [0-9] | ||
| :) | |||
| dmq | so in the name of avoiding cultural imperialism we make it useless to everybody? | ||
| TimToady | now you're arguing | 18:58 | |
| PerlJam | people keep saying "useless" and that's just not true. | ||
| dmq | the story about solomon and the baby comes to mind, and ill just say im happy to make \\d matching ONLY thai digits. | 18:59 | |
| i notice that the nepalese dont have any digits. | 19:00 | ||
| clsn | Perhaps not "useless", but apparently "useful for things nobody ever used it for before." which I guess is neither here nor there. | ||
| dmq | i mean to be honest id be fine with implementing something that makes it easy to make \\d mean whichever set of 10 unicode codepoints you want. | 19:01 | |
| :-) | |||
| so long as the default is 0-9 | |||
| :-) | |||
| ah cool lets use \\d => U+0F20 to U+0f29 | 19:02 | ||
| TimToady | well, one of your Perl 5 legacy applications is STD.pm, which needs \\d to match Unicode, so please don't break that :P | ||
| PerlJam | dmq: personally, I don't think I care much as long as all of the character class shortcuts behave similarly. i.e. if \\w follows unicode, so does \\d. if \\w is ascii, so it \\d etc. | 19:03 | |
| dmq: (and that there's a way to switch) | |||
| TimToady | dmq: sorry, you can't use both F and f in hex numbers anymore | 19:04 | |
| dmq | i personally thinks thats not as good as making \\d mean 0-9 always. | ||
| but what the heck. | |||
| im ok with that. | |||
| :-) | |||
| which do you want me to make [:XDIGIT:] match tho? | 19:05 | ||
| TimToady | I want both, but you're using F/f inconsistently, so I just thought by your argument you'd want to limit it to one or the other, in a culturally imperialistic sort of way... | 19:06 | |
| PerlJam | TimToady: I don't think parody has ever been a useful form of instruction :) | 19:07 | |
| dmq | id have done it all uppers like the standard uses except that on my keyboard its a pain to num/upper-letter/number in a row | ||
|
19:08
alester joined
|
|||
| TimToady | PerlJam: yeah, there's a pair of adjacent Proverbs that argue that on both sides :) | 19:08 | |
| btw, the translations are already extracted into lib/unicore/To/Digit.pl | |||
| dmq | nod | 19:09 | |
| so you want us to hack the numification too? | |||
| karl will probably do a routine for that. | |||
| imo its a good idea. | |||
| TimToady | I'm willing to live with the inconsistency if no one has time to hack it :) | ||
| dmq | maybe lc($num) should result in digits being transformed. :-) | ||
| TimToady | I don't even have enough time to hack on p6 these days :) | 19:10 | |
| dmq | with which inconsistancy? | ||
|
19:10
kidd joined
|
|||
| dmq | you would prefer we do nothing and not fix the bugs or provide people ways to fix the bugs? | 19:10 | |
| TimToady | \\d matching Unicode but numification remaining ignorant | ||
| PerlJam | dmq: just introduce an ascii() op for those that don't care for unicode :) | ||
| dmq | ah ok | ||
| sorry | |||
| i thought you meant something else. | |||
| TimToady | but I'd prefer that numification get fixed rather than \\d get broken | ||
| moritz_ | PerlJam: isn't that the plan? with /a? | 19:11 | |
| TimToady | ascii() would be a valid way of approaching the untyped buffer problem | ||
| that's what I mean about fixing the types rather than adding bandaids | |||
| PerlJam | moritz_: that doesn't help with numification | 19:12 | |
| TimToady | and then you push back asciiness one step further and label the incoming filehandle as :ascii | ||
| then its strings are just born that way | |||
| likewise for any other encoding | |||
| and then you don't have guess what the high bits mean | 19:13 | ||
| this is one of the areas where Perl 5 could usefully borrow ideas from Perl 6 | |||
| dmq | and now strings carry around their encoding information? | 19:14 | |
| TimToady | their *type* information | ||
| which might imply an encoding | |||
| dmq | and so what type is the result of joing two strings | ||
| ? | |||
| which are different types? | |||
| TimToady | can always join to a Unicode string | 19:15 | |
| dmq | so then the result is magically converted in format? | ||
| TimToady | no magic, just hard work to do it right | ||
| but it beats guessing what the numbers mean later | |||
|
19:15
SmokeMachine joined
|
|||
| dmq | doesnt that mean you turn binary+unicode into "a gazzilion encodings"+unicode. | 19:15 | |
| TimToady | it means you don't allow unicode ops on strings you don't know the type of, as Perl 6 does | 19:16 | |
| dmq | i dotn see how it solves the problems people encounter with this stuff all the time actually. | ||
| TimToady | it means breaking something after a deprecation cycle | ||
| dmq | we discussed this at length on p5p actually. | ||
| TimToady | I'm sure you did :) | ||
| dmq | the problem basically it just makes the current situation worse. | 19:17 | |
| TimToady | the current situation is a false minimum | ||
| dmq | not better. | ||
| TimToady | the only way to make it better is to make it temporarily worse | ||
| dmq | now every piece of code has to agonize over string type. | ||
| the general intention was to go the other way, and go to all unicode and only unicode. | |||
| TimToady | well, now you're starting to get into why Perl 6 has multiple dispatch, sure | 19:18 | |
| dmq | with certain specific mappings. | ||
| TimToady | I didn't say it would be trivial to fix it right | ||
| I really don't think the p5 community has what it takes to make significant progress here, to be honest, because the ramifications go on and on, and every step is painful to someone. | 19:19 | ||
| dmq | the modifiers seem to me to be the only sane solution for perl5. | 19:20 | |
| TimToady | .oO(There is no problem is computer language design that cannot be solved by adding another layer of cruft.) |
19:21 | |
|
19:21
brunov joined
|
|||
| dmq | and frankly even elsewhere. both sets of semantics are reasonable and will be common. | 19:21 | |
| TimToady | but you're likely correct | ||
| in the cultural sense, at least | |||
| dmq | i dont see how tagging strings with type actually solves the problems we see in perl5 with utf8/non | ||
| TimToady | I'd just like to not see a retreat toward C's head-in-the-sand attitude toward text | 19:22 | |
| dmq | which primarily focus around strings changing types unexpectedly, and semantics changing unexpectedly. | ||
| TimToady | you would always know how to upgrade any typed "non" to utf8 | ||
| because a well typed string knows the mapping to unicode | 19:23 | ||
| dmq | so then before you do anything useful with any string the only way to get consistent results is to guard that usage with unicode upgrade? | ||
| TimToady | if you want consistent unicode semantics, you have to know the codepoints | ||
| it's possible, but difficult, to do an abstract mapping without upgrade | 19:24 | ||
| dmq | so you are saying that Perl6 will apply Unicode rules always, regardless of the encodings of the strings? | ||
| if so then that is different from what i understood. | |||
| and that makes sense. | |||
| TimToady | well, that's what Perl 6 does, but that's because binary buffers aren't considered strings | ||
| dmq | and is what we would like to do in perl. | ||
| perl5 | |||
| Juerd | My message to p5p isn't getting through | ||
| moritz_ | Juerd: it sometimes takes a way | 19:25 | |
| TimToady | neither is mine, oh wait.... :P | ||
| Juerd | TimToady: Is yours rfc2822 formatted? ;) | ||
| dmq | well if the /semantics/ dont vary with encoding then its not what we have in perl. | ||
| perl5. | |||
| Juerd | 5.10 :D | ||
| dmq | sorry. | ||
| and its the semantics changing that is the problem, not which semantics are chosen. | 19:26 | ||
| Juerd | That depends. I don't see it as "the" problem, but one of the problems. | ||
| dmq | and if in your proposal the semantics do change depending on the type then it seems to me you are back at square 1 with the problems that perl5 has. | ||
|
19:26
IllvilJa joined
|
|||
| TimToady | S02:52 | 19:27 | |
| Juerd | I see two distinct major problems with going back to ascii land. Unnecessary incompatibility, and straying from the unicode path. | ||
| And then some small ones, but they're minor. | |||
| dmq | nobody is talking about that juerd. | ||
| Juerd | Okay. | ||
| dmq | it is how 5.11.1 works and it was bad idea. | 19:28 | |
| and broken | |||
| severly. | |||
| Juerd | Oh, that's great to hear | ||
| I'm just going to paste my mail to p5p on a paste site | |||
| TimToady | biab & | ||
| Juerd | It explains that all this started with me reading perl5110delta and not realising there was a 5.11.1 already. | ||
| avar | Juerd: you can also use the nntp interface | 19:29 | |
| Juerd | avar: I'm sure it's technically possible | ||
| But it's been a decade since I used nntp | |||
| dmq | is there an easy link to an expanded version of S02-bits.pod? | ||
|
19:29
desertm4x joined
|
|||
| Juerd | What do you mean by expanded? | 19:29 | |
| dmq | svn.pugscode.org/pugs/docs/Perl6/Sp...2-bits.pod | ||
| moritz_ | perlcabal.org/syn/S02.html#line_52 | 19:30 | |
|
19:30
cognominal joined
|
|||
| Juerd | Easy links to synopses in general, are p3rl.org/S02 | 19:30 | |
| dmq | ok so unicode semantics | 19:31 | |
| fine | |||
| so \\s match \\v? | |||
| Juerd | p3rl.org/8602QWAD is what I posted to p5p | ||
| dmq | and things like that? | ||
| TimToady | \\v means something else in p6 | 19:34 | |
| it's any vertical whitespace | |||
| (including the old \\v, interestingly) | |||
| along with \\h for horizontal whitespace | |||
| dmq | well that is what \\v means in a perl5 regex too. | 19:35 | |
| same with \\h | |||
| and i meant the "old \\v" | 19:36 | ||
|
19:37
mberends joined
|
|||
| TimToady | okay, then maybe the only difference is that in p6 you can't print "\\v" and get a vertical tab | 19:39 | |
| whatever that is... :) | |||
| PerlJam | ^L (it's a really big vertical tab :) | 19:40 | |
| TimToady | then where's our really big horizontal tab? WE WAZ ROBBED!!! | 19:41 | |
| dmq | actually \\v is only special in a regex pattern. | ||
| TimToady | ah, so it is | 19:42 | |
| diakopter | rakudo: say "\\v" | 19:43 | |
| p6eval | rakudo 6a43a3: OUTPUT«v» | ||
| TimToady | std: say "\\v" | 19:44 | |
| p6eval | std 28938: OUTPUT«[31m===[0mSORRY![31m===[0mUnrecognized backslash sequence: '\\v' at /tmp/bOK7p56U0D line 1:------> [32msay "\\v[33m⏏[31m"[0mFAILED 00:02 104m» | ||
| diakopter | rakudo: say '\\v' | 19:47 | |
| p6eval | rakudo 6a43a3: OUTPUT«\\v» | 19:48 | |
| diakopter | std: say '\\v' | ||
| p6eval | std 28938: OUTPUT«ok 00:02 103m» | ||
| TimToady | S02:3347 is the spec for that | 19:51 | |
| phone | 20:00 | ||
|
20:15
colorless joined
|
|||
| colorless | Hrm... anyone know of a good editor with a perl6 syntax highlighting tool, beyond padre? | 20:16 | |
| TimToady | there's this obscure one called "vim" | 20:17 | |
| colorless | fair enough | ||
| TimToady | though the p6 highlighting doesn't come bundled with it :) | 20:18 | |
| moritz_ | colorless: github.com/petdance/vim-perl | ||
| PerlJam | colorless: you don't like padre | 20:19 | |
| ? | |||
| dmq | maybe padre is too colorful | 20:20 | |
| colorless | I installed the perl6 plugin, and I can't seem to get it to work. I enabled it, and made sure that coloring was checked, but nada. | ||
| szabgab | what is colorless higlightig? | ||
| japhb | szabgab, inverse and blink | ||
| szabgab | crap dmq beat me | ||
| colorless | @szabgab: shades of gray? | ||
| lambdabot | Unknown command, try @list | ||
| japhb | Too bad lambdabot doesn't DWIM and only give that error if addressed directly. | 20:22 | |
| PerlJam | colorless: Are you sure padre recognizes your document as Perl 6? | ||
| moritz_ | colorless: start the program with 'use v6;', that should help | ||
| colorless | Well, it was smart enough to turn off coloring when I saved as a .p6 | ||
| japhb | moritz_, how early does it have to appear? | ||
| PerlJam | colorless: or, View -> View Document As... -> Perl 6 | ||
| colorless | That too. It acknowledges that perl6 is there, and that it has a color set. Just a... monotone colorset | 20:23 | |
| moritz_ | japhb: no idea, but first line should do ;-) | ||
|
20:24
PZt joined
|
|||
| japhb | I guess you'd want it on the first or second line (accounting for #!) anyway ... | 20:24 | |
| early declaration, and all that | |||
| szabgab | I am not sure Padre cares | 20:25 | |
| colorless | One assumes that it would be upset if I changed the language on it. But it selects Perl 6 on the "View Document As:" list. | ||
| szabgab | where use v6; appares | ||
| bug ? | 20:26 | ||
| moritz_ | not really | ||
| Tene | So, um... I can't run 'make spectest' in rakudo. 'Unknown arguments to TAP::Harness' | 20:32 | |
| moritz_ | Tene: which version of TAP::Harness do you use? | ||
| Tene | looks like 3.16 | 20:33 | |
| moritz_ | that should be sufficiently new | ||
| Tene | but there's also a 3.10 installed? what? | 20:34 | |
| nm, thanks moritz. | 20:35 | ||
| moritz_ | debian sometimes has problems with dual-lived modules, it seems | ||
| not sure about other distris | |||
| Tene | does rakudo have a smoke server or anything? I heard jonathan mention smokes, but there's no 'make smoke' or 'make smolder' target... | ||
| yes, removed the broken module, everything works now. | 20:36 | ||
| moritz_ | Tene: spectest_smolder | ||
| is the make target | |||
| tinyurl.com/rakudosmoke | |||
| Tene | ah, thanks. | ||
| moritz_ | two failures are to be expected | ||
| one in unicode.t | 20:37 | ||
| one in IO-Socket-INET.t | |||
| Tene | I'm planning on focusing on sockets and IO stuff coming up soon. I'll look at the latter sometime. | 20:38 | |
|
20:38
__ash__ joined
|
|||
| moritz_ | Tene: then you can also look at rt.perl.org/rt3/Ticket/Display.html?id=70045 (and maybe apply it) | 20:38 | |
| pugs_svn | r28939 | lwall++ | [subst.t] fix parsefailing s,,, test | 20:39 | |
| Tene | my first task is a Select PMC | 20:40 | |
| KyleHa | One down, 525 to go. | 20:55 | |
|
20:59
fax joined
|
|||
| moritz_ | rakudo: sub iPower($a, $b) { exp($b * log($a)) }; say iPower(1i, 3.0); | 21:04 | |
| p6eval | rakudo 6a43a3: OUTPUT«-1.83697019872103e-16 + -1i» | ||
| KyleHa | I'm 305 rows down in my old spreadsheet, and 125 rows are marked as 'tested'. | 21:08 | |
| moritz_ writes tests for RT #68848 | 21:09 | ||
| KyleHa | The old spreadsheet has 393 rows. There are now 525 tickets. So it looks like I've basically just kept up with the incoming rate, and that's by skipping over quite a few. | 21:10 | |
| Tene | oh man, spectests take a LONG TIME to run. | 21:11 | |
| moritz_ | aye :( | ||
| moritz_ blames parrot | |||
| Tene blames moritz. | 21:12 | ||
| pugs_svn | r28940 | moritz++ | [t/spec] tests for RT #68848, complex powers wrapped in a subroutine | 21:13 | |
| japhb blames schwern. Oh wait, that was yesterday. | |||
| Tene | See? You keep adding more tests! | ||
|
21:13
Su-Shee left
|
|||
| jnthn | I know, it's like they want good test coverage metrics or something! | 21:13 | |
| moritz_ | if we only had those.... ;-) | 21:14 | |
| KyleHa | Is it possible to get coverage metrics with Rakudo? On my last P5 project, I loved looking at Devel::Cover reports to see where to test next. | ||
| Tene | you could probably make something out of the parrot profiling runcore... | 21:15 | |
| moritz_ | but that is slooooow | ||
| Tene | have you profiled the profiler? | ||
| moritz_ | cotto_work has done that, and improved it a lot | 21:16 | |
| still slooow | |||
| PerlJam | A profiler and code coverage tool would be excellent for Rakudo | 21:17 | |
| jnthn | moritz_: Part of the problem is that Rakudo itself is pretty slow too. | 21:18 | |
| moritz_ | part of the problem is that rakudo under a profiling parrot ist 18 times slower than under a normal one | 21:22 | |
|
21:22
dj_goku joined
21:23
Whiteknight joined
|
|||
| jnthn | moritz_: Right, it's a problem of more than one part. ;-) | 21:25 | |
| KyleHa | So we could run the spectests, like, overnight...to get profiling data. Wow. | ||
|
21:25
rdice joined
|
|||
| moritz_ | KyleHa: don't forget that it takes another year to run pprof2cg.pl over the data | 21:26 | |
| KyleHa | Room for improvement! | ||
| Opportunity! | |||
| xp_prg | anyone used aspell here? | 21:32 | |
| moritz_ | rakudo: sub foo($positional, :$named) {}; foo(:named) | ||
| p6eval | rakudo 6a43a3: OUTPUT«Not enough positional parameters passed; got 0 but expected 1in Main (file src/gen_setting.pm, line 295)» | ||
| jnthn | moritz_: Had we used to make a mess of that one? | 21:33 | |
| pugs_svn | r28941 | kyle++ | [t/spec] A few tests for "quietly" | ||
| moritz_ | jnthn: yes | 21:35 | |
| invalid arg type in named portion of | |||
| args | |||
| rt.perl.org/rt3/Ticket/Display.html?id=68568 | |||
| jnthn++ #for fixing it | |||
| KyleHa | There's a lot of stuff that could be tested better if error messages were standardized. | 21:36 | |
| moritz_ | yes, we have to do that at some point | 21:37 | |
| KyleHa | I can imagine that being a large pain for whoever is stuck implementing them. | ||
| moritz_ | but we really need a champion who pushes that matter | ||
| pmichaud | ...drum-roll... | ||
| moritz_ | (and I'm not doing it) | ||
| rakudo: for 1,2,3,4,5 -> $a, $? { say $a } | 21:38 | ||
| p6eval | rakudo 6a43a3: OUTPUT«13StopIterationin Main (file <unknown>, line <unknown>)» | ||
|
21:38
dj_goku joined
|
|||
| jnthn | moritz_: That was rather less than awesome... | 21:38 | |
| KyleHa | The champion's job would be to write the spec and then holler for feedback and make revisions until everyone likes it? | ||
| moritz_ | the old error message was "Invalid twigil used in signature parameter" | ||
| KyleHa: mostly, yes | |||
|
21:38
tak11 joined
|
|||
| pmichaud | oops, I killed dalek. | 21:39 | |
| moritz_ | KyleHa: though one doesn't have to get agreement from everybody | ||
| pmichaud | here's the punchline: | ||
| :39 <dalek> nqp-rx: Complete bootstrapping of nqp-rx. It now builds itself entirely from its own source files, and does not require NQP or PGE from (except for pod comments) from Parrot's nqp test suite. |
|||
|
21:39
dalek joined
|
|||
|
21:39
brunov joined
|
|||
| moritz_ | KyleHa: it's enough to get approval from TimToady and maybe some implementors | ||
| jnthn | pmichaud++ !!!! | ||
| pmichaud: That's the whole regex engine bootstrapped on it too? | 21:40 | ||
|
21:40
frederico joined
|
|||
| moritz_ | KyleHa: independently of that we should simply start to collect error messges | 21:40 | |
| pmichaud | jnthn: yes. | ||
| PerlJam | pmichaud++ | ||
| KyleHa | moritz_: You mean a catalog of what Rakudo outputs right now? | ||
| pmichaud | there are some things that the regex engine doesn't do yet that PGE does, but they're the sorts of things that weren't important to building NQP :-) | ||
| PerlJam | pmichaud: did you work out make install too? | ||
| pmichaud | PerlJam: not yet, but it's pretty trivial. | 21:41 | |
| Just installs a few .pbc files | |||
| jnthn | pmichaud: That's fine, I guess for the most part they won't be hard to put back in later, if not easier than the first time around. | ||
| moritz_ | KyleHa: yes, rakudo and maybe other implementations | ||
| jnthn | For you, at least. :-) | ||
| pmichaud | they're easier than the first time around | ||
| PerlJam claims the good news about nqp-rx as his virtual birthday present :) | |||
| pmichaud | because I get to re-use code | ||
|
21:41
Whiteknight joined
|
|||
| moritz_ | PerlJam++ # birthday | 21:41 | |
| pmichaud | for example, regexes don't currently handle \\x[...] \\c[...] etc. | ||
| however | |||
| the HLLGrammar has it built in as its quote expression | 21:42 | ||
| moritz_ | anybody else having birthday? | ||
| KyleHa | moritz_++ # error message path forward clarity | ||
| pmichaud | so the regex engine will just call over to the HLLGrammar engine for that | ||
| (error messages) Also be sure to look in STD.pm | 21:43 | ||
| jnthn | Oh, nice. :-) | ||
| KyleHa | I was thinking that the standard Exception object should include accessors that tell where the error happened (file, line, package, whatever). | 21:47 | |
| moritz_ | right | ||
| we also had a good discussion with TimToady about exception things | |||
| let me see if I can find it in the logs | |||
| KyleHa | Thanks. | 21:48 | |
| I think we'd have to have a standard error catalog and then a standard way to emit non-standard errors (such as Parrot's null PMC or anything else implementation-specific). | 21:49 | ||
| moritz_ | irclog.perlgeek.de/perl6/2009-07-16#i_1321556 | ||
| KyleHa: oh, you already participated in that discussion ;-) | 21:50 | ||
| KyleHa | If there's a fixed menu of errors, it would make it easier to do i18n with them. | ||
| moritz_ | aye | ||
| KyleHa | It was long enough ago that I forgot it. 8-) | ||
| jnthn | i18n'd errors would be nice. | ||
| moritz_ | I mostly remembered that it existed, not the exact contents | ||
|
21:51
kent\\n joined
|
|||
| KyleHa | Thanks for digging that up, moritz_++ | 21:51 | |
| I guess each Exception could have a 'source' that is (1) the compiler, (2) the programmer via "die", (3) the OS, (4) internal (Parrot), or (5) other. | 21:52 | ||
| OK, time to commute. Take care, #perl6. | 21:53 | ||
| jnthn | o/ | 21:54 | |
| save travels | |||
| moritz_ | ciao | ||
| jnthn | *safe | ||
| KyleHa | Thanks! o/ | ||
| moritz_ | rakudo: say sign(3+4i).perl | 21:55 | |
| p6eval | rakudo 6a43a3: OUTPUT«You can only coerce a Complex to Num if the imaginary part is zero0» | ||
| pmichaud | moritz_: what would you need to add nqp to p6eval ? | 21:57 | |
| or what would you like to have ? | |||
| moritz_ | pmichaud: a build target for the fakexecutable | ||
|
21:57
Psyche^ joined
|
|||
| pmichaud | moritz_: that's the current default target | 21:57 | |
| moritz_ | pmichaud: optionally a 'make install' | 21:58 | |
| pmichaud | aka "make nqp" | ||
| oh, you probably need 'make install' | |||
| since it depends on having some .pbc files available | |||
| moritz_ | pmichaud: and an estimation on how often it should be rebuilt | ||
| pmichaud | how often is rakudo rebuilt? | ||
| moritz_ | pmichaud: I can chdir to nqp-rx's build dir | ||
| pmichaud | chdir to nqp-rx's build dir works for now, yes. | ||
| moritz_ | once or twice per hour | ||
| pmichaud | whatever schedule you think is best. | ||
| anyway, "make nqp" will always work. | 21:59 | ||
| moritz_ | pmichaud: how good are our overall chances that nqp-rx works with the same parrot revision as rakudo? | ||
| pmichaud | moritz_: pretty good | 22:00 | |
| nqp doesn't depend on a lot of parrot changes at the moment. | |||
| moritz_ | then I'll use the same installed parrot for both... oh wait | 22:01 | |
| that would imply that I need to rebuild nqp every time I rebuild rakudo | |||
| pmichaud | shouldn't | ||
| moritz_ | I'll just use --gen-parrot | ||
| pmichaud | it's only a problem if the .pbc format changes | ||
| but yes, just use --gen-parrot for now | |||
| japhb | moritz_, when rakudo is reworked onto nqp-rx you'll need to gang them together anyway, yes? | ||
| pmichaud | japhb: yes, but rakudo will solve that problem | ||
| moritz_ | pmichaud: I have a scheme with two install dirs in which I install parrot in turns | 22:02 | |
| (also goes to japhb) | |||
| pmichaud | japhb: i.e., rakudo will have any nqp dependencies already handled in its configure | ||
| moritz_ | so when one is being rebuilt, the other works | ||
| pmichaud | moritz_: anyway, --gen-parrot (should be) cheap if build/PARROT_REVISION isn't being bumped | ||
| because there's no parrot to rebuild | |||
| anyway, if you need something in nqp-rx, let me know (or feel free to make commits) | 22:03 | ||
| afk for a bit, feeding kids | |||
| actually, running errand so bbl | 22:04 | ||
| moritz_ | hugme: add moritz to nqp-rx | 22:07 | |
| hugme hugs moritz. Welcome to nqp-rx! | |||
|
22:11
mrsaturns joined,
payload joined
|
|||
| mrsaturns | /help | 22:11 | |
| hmm... hey everyone! | 22:13 | ||
| moritz_ | hi ;-) | ||
| dalek | p-rx: fcb7998 | moritz++ | build/gen_parrot.pl: [build] enable parallel parrot build per environment variable |
||
| moritz_ | I wonder if I should cherry-pick that for rakudo too | 22:14 | |
| mrsaturns | I'm on irc on my android phone. :) sorry bout being off-topic(is there a current topic?) | 22:17 | |
| Tene | not really. | ||
| just your phone, apparently. | |||
| Have you compiled rakudo for your phone yet? | |||
| moritz_ | mrsaturns: Perl 6 ;-) | ||
| mrsaturns | Tene: no i havent. | 22:18 | |
| but i do have perl 5.10.0 | |||
| japhb | Best thing about perl 5.10 ... is that you can use it to configure and build Parrot & Rakudo! ;-) | 22:19 | |
| mrsaturns | do you think i could on my phone? | 22:20 | |
| moritz_ | if you have a C compiler | ||
| japhb | I don't happen to know off-hand of anyone doing a compiler on Android, but there's no particular reason you couldn't, as long as you have the dev tools. | 22:21 | |
| C compiler, make, etc. | |||
| s/doing a compiler/doing a Parrot compile/ | |||
|
22:22
zamolxes joined
|
|||
| mrsaturns | there is no builtin c compiler or make, maybe theres someway to get one on. | 22:22 | |
| Tene | cross-compile? | ||
| japhb | Actually, someone who has an Android should try (hint hint), it would be a nice brag item | ||
| Juerd quickly hides his phone | 22:23 | ||
| Tene | My gf has one. | ||
| quietfanatic | rakudo: submethod x { say $_ }; 45.x | ||
| p6eval | rakudo 6a43a3: OUTPUT«Method 'x' not found for invocant of class 'Int'in Main (file src/gen_setting.pm, line 295)» | ||
| quietfanatic | Am I doing something wrong or is this NYI? | 22:24 | |
| mrsaturns | std: submethod x { say $_ }; 45.x | 22:25 | |
| p6eval | std 28941: OUTPUT«ok 00:01 109m» | ||
| jnthn | quietfanatic: I think you're doing something wrong. | 22:27 | |
| quietfanatic: submethods don't work like that. :-) | |||
| They're just like ordinary methods apart from you can only call them in the most derived class. | |||
| quietfanatic | I guess I should reread the spec then | ||
| rakudo: submethod Object::x { say self }; 45.x | 22:28 | ||
| p6eval | rakudo 6a43a3: OUTPUT«Method 'x' not found for invocant of class 'Int'in Main (file src/gen_setting.pm, line 295)» | ||
| quietfanatic | rakudo: smethod Object::x { say self }; 45.x | ||
| p6eval | rakudo 6a43a3: OUTPUT«invoke() not implemented in class 'Undef'in Main (file <unknown>, line <unknown>)» | 22:29 | |
| quietfanatic | rakudo: method Object::x { say self }; 45.x | ||
| p6eval | rakudo 6a43a3: OUTPUT«Method 'x' not found for invocant of class 'Int'in Main (file src/gen_setting.pm, line 295)» | ||
| quietfanatic | rakudo: class Object is also { method x { say self } }; 45.x | ||
| p6eval | rakudo 6a43a3: OUTPUT«45» | ||
| mrsaturns | *claps* | ||
| quietfanatic | There. :) | 22:30 | |
| There's gotta be an easier way to do that. | |||
| mrsaturns | well,you know what they say, TMTOWTDI, unless of course theres not. | 22:32 | |
| jnthn | quietfanatic: well, it's meant to look like: augment Object { method x { say self } } | 22:34 | |
| quietfanatic: That's the Easiest Way. :-) | |||
| Rakudo will switch from "is also" to this updated syntax soonish. | |||
| quietfanatic | yeah... | 22:35 | |
| I'll have to write a macro if I want to do that more often. | |||
| (iirc macros are also not implemented yet) | |||
| mrsaturns | it really isn't that much typing. | 22:36 | |
| jnthn | I really hope you don't want to do that often. | ||
| quietfanatic | The example I was trying to do was: method shq { .subst("'", "'\\\\''", :global) } | 22:37 | |
| so that I could say $filename.=shq | |||
| instead of $filename = shq $filename | |||
|
22:38
SmokeMachine joined
|
|||
| quietfanatic | It just made a lot more sense that way. | 22:38 | |
|
22:39
lichtkind joined
|
|||
| mrsaturns | rakudo: [1..100000].pick.say | 22:43 | |
| p6eval | rakudo 6a43a3: TIMED_OUT | 22:44 | |
| diakopter | rakudo: &self() | 22:46 | |
| p6eval | rakudo 6a43a3: OUTPUT«invoke() not implemented in class 'Undef'in Main (file <unknown>, line <unknown>)» | ||
| quietfanatic | rakudo: &term:<self> | ||
| p6eval | rakudo 6a43a3: OUTPUT«Confused at line 2, near ":<self>"in Main (file <unknown>, line <unknown>)» | ||
| quietfanatic | aw | ||
| diakopter | rakudo: &say() | 22:47 | |
| p6eval | rakudo 6a43a3: OUTPUT«» | ||
| mrsaturns | rakudo's confused | ||
| quietfanatic | std: &term:<self> | ||
| p6eval | std 28941: OUTPUT«ok 00:02 125m» | ||
| diakopter | rakudo: &say(&say) | ||
| p6eval | rakudo 6a43a3: OUTPUT«say» | ||
| mrsaturns | should that do that? | 22:48 | |
| moritz_ | I think it's a sensible stringification | ||
| mrsaturns | std: &say(&say) | ||
| p6eval | std 28941: OUTPUT«ok 00:03 126m» | ||
| quietfanatic | If the sub is declared with a name it stringifies that way. | ||
| my &s = sub {say 3}; say &s | 22:49 | ||
| rakudo: my &s = sub {say 3}; say &s | |||
| p6eval | rakudo 6a43a3: OUTPUT«_block58» | ||
| quietfanatic | rakudo: my &s = sub s {say 3}; say &s | ||
| p6eval | rakudo 6a43a3: OUTPUT«Redefinition of routine ss» | ||
| diakopter | rakudo: my $s = sub {say 3}; say $s | ||
| p6eval | rakudo 6a43a3: OUTPUT«_block57» | ||
| quietfanatic | rakudo: my $s = sub s {say 3}; say &s | 22:50 | |
| p6eval | rakudo 6a43a3: OUTPUT«s» | ||
| quietfanatic | rakudo: my $s = sub s {say 3}; say $s | ||
| diakopter | rakudo: my %s = sub {say 3}; say %s | ||
| p6eval | rakudo 6a43a3: OUTPUT«s» | ||
| rakudo 6a43a3: TIMED_OUT | |||
| quietfanatic | Odd number of elements in hash constructor there. | ||
| diakopter | yeah, but /me blinks anyway | 22:51 | |
| rakudo: my @s; say @s[].WHAT.new.push(44) | 22:53 | ||
| p6eval | rakudo 6a43a3: OUTPUT«Null PMC access in type()in Main (file <unknown>, line <unknown>)» | ||
| moritz_ | bug! | ||
| diakopter | rakudo: my @s; say @s[].WHAT.new | ||
| p6eval | rakudo 6a43a3: OUTPUT«» | ||
| jnthn | rakudo: Array.new | 22:54 | |
| rakudo: Array.new.push(42) | |||
| p6eval | rakudo 6a43a3: ( no output ) | ||
| quietfanatic | rakudo: List.new.push(42) | ||
| jnthn | rakoudo: my @s; say @s[].WHAT | ||
| p6eval | rakudo 6a43a3: ( no output ) | ||
| quietfanatic | rakudo: say List.new.push(42) | 22:55 | |
| jnthn | rakudo: my @s; say @s[].WHAT | ||
| p6eval | rakudo 6a43a3: OUTPUT«List()» | ||
| rakudo 6a43a3: OUTPUT«Null PMC access in type()in Main (file <unknown>, line <unknown>)» | |||
| jnthn | oh | ||
| .push returns NPMC. | |||
| :-/ | |||
| quietfanatic | no | ||
| lichtkind | jedno pivo pro jnthn | ||
| quietfanatic | Wait yes | 22:56 | |
| It performed them in the reverse order. | |||
| jnthn | lichtkind: \\o/ | 22:57 | |
| Dakujem velmi pekne! | |||
| moritz_ | multi sub sign(Any $x) { ... } | 22:58 | |
| diakopter | rakudo: List() | ||
| p6eval | rakudo 6a43a3: OUTPUT«invoke() not implemented in class 'ResizablePMCArray'in Main (file <unknown>, line <unknown>)» | ||
| moritz_ | sign(:x(0)) | 22:59 | |
| => No applicable candidates found to dispatch to for 'sign' | |||
| why? | |||
| jnthn | moritz_: Because it's a multi-dispatch. | 23:01 | |
| moritz_: Which doesn't account for named arguments. | |||
| moritz_: You need to write a proto. | |||
| moritz_ | ok | ||
| speaking of which | 23:02 | ||
| why do proto regex declarations don't account for the parametrisation with :sym<thing>? | |||
| jnthn | EPARSEFAIL | ||
| moritz_: Don't quite understand what you're asking. | 23:03 | ||
| moritz_ | when you declare a proto for a multi, you do it in a way that indicates the signatures of the multis | 23:04 | |
| so if you have only two-arg candidates, you have ($, $) as the signature | |||
| right? | |||
| otoh the proto declarations in nqp-rx look like this: | 23:05 | ||
| proto token quantifier { <...> } | 23:06 | ||
| but the individual tokens as parameterized | |||
| like token quantifier:sym<*> { <sym> } | |||
| why isn't that parametrization also part of the proto declaration? | |||
| *not also part of | |||
| TimToady | that's not a parameter really--it's just part of the name that the compiler knows to pick out specially | 23:08 | |
| moritz_ | ok | ||
|
23:09
SmokeMachine joined
|
|||
| jnthn | moritz_: Also, the whole idea of a proto laying down the possibilities for a multi signature is kinda not something we worry about in Rakudo. | 23:09 | |
| Apparently there was some idea of auto-generating missing protos too. | |||
| However, it was never spec'd in any way other than "well we just magically get it" | 23:10 | ||
| And I never really got the motivation or the idea. | |||
| (I've asked about it before, and the responses haven't led me to feel it mattered much.) | |||
| For example, if I write a: | 23:11 | ||
| proto foo($, $) { ... } | |||
| Is it then an error to write a multi foo($) { ... } | 23:12 | ||
| moritz_ | no idea | ||
| diakopter | std: proto foo($, $) { ... }; multi foo($) { ... }; | ||
| p6eval | std 28941: OUTPUT«ok 00:01 107m» | ||
| jnthn | Other than as an "omg no candidates matched" fallback - which is what Rakudo implements - I've not got much of a feel for the other roles protos might play. | 23:13 | |
| moritz_ | it's also the "subs declared with that name are automatically multis" | ||
| diakopter | std: multi foo($) { ... }; multi foo($) { ... }; | 23:14 | |
| p6eval | std 28941: OUTPUT«ok 00:01 107m» | ||
| jnthn | Yes, we do that too. | ||
| But the spec says things like: | |||
| specify the commonalities (such | |||
| as parameter names, fixity, and associativity) shared by all multis | |||
| of that name in the scope of the C<proto> declaration. | |||
| diakopter | rakudo: multi foo($) { ... }; multi foo($) { ... }; | ||
| p6eval | rakudo 6a43a3: ( no output ) | ||
| diakopter | rakudo: multi foo($) { ... }; multi foo($) { ... }; foo(&foo); | 23:15 | |
| p6eval | rakudo 6a43a3: OUTPUT«Ambiguous dispatch to multi 'foo'. Ambiguous candidates had signatures::(Any $):(Any $)in Main (file <unknown>, line <unknown>)» | ||
| diakopter | rakudo: proto foo($) { ... }; multi foo($) { ... }; foo(&foo); | ||
| p6eval | rakudo 6a43a3: ( no output ) | ||
| jnthn | Further down it talks about how if there's a proto then we have a "known fixed signature" | ||
| However, looking through S06, that's as specific as it gets. | 23:16 | ||
| moritz_ | that's kinda non-specific | ||
| dalek | kudo: fcdf3e8 | moritz++ | src/setting/Complex.pm: whitespace fixes in Complex.pm |
||
| kudo: 8cf27e5 | moritz++ | src/ (3 files): move sign() to setting, also implement the method form |
|||
| diakopter | rakudo: our proto foo($) { ... }; my sub foo { say $^a }; foo(&foo); | ||
| p6eval | rakudo 6a43a3: OUTPUT«get_pmc_keyed() not implemented in class 'Undef'in Main (file <unknown>, line <unknown>)» | ||
| diakopter | what's calling get_pmc_keyed? | 23:17 | |
| jnthn | diakopter: heh, that's what I was wondering | ||
| rakudo: my sub foo { say $^a }; foo(&foo); | 23:18 | ||
| p6eval | rakudo 6a43a3: OUTPUT«block_19» | ||
| jnthn | std: our proto foo($) { ... }; my sub foo { say $^a }; | ||
| p6eval | std 28941: OUTPUT«ok 00:02 110m» | ||
| pugs_svn | r28942 | moritz++ | [evalbot] nqp now executes nqp-rx | 23:19 | |
| jnthn | moritz_: ah, S12 has a bit more. | ||
| Within its scope, | |||
| the signature of a C<proto> also nails down the presumed order | |||
| and naming of positional parameters, so that any multi call with named | |||
| arguments in that scope can presume to rearrange those arguments into | |||
| positional parameters based on that information. (Unrecognized names | |||
| remain named arguments.) Any other type information or traits attached | |||
| to the C<proto> are also shared by the routines within its scope, | |||
| so a C<proto> definition can be used to factor out common traits. | |||
| moritz_ | evalbot control restart | 23:20 | |
|
23:20
p6eval joined
|
|||
| moritz_ | nqp: say('new and improved') | 23:20 | |
| p6eval | nqp: OUTPUT«new and improved» | ||
| diakopter | rakudo: proto foo { say 4 }; sub foo { say &^a }; foo(&foo); | ||
| p6eval | rakudo 6a43a3: OUTPUT«Too many positional parameters passed; got 1 but expected 0in Main (file src/gen_setting.pm, line 295)» | 23:21 | |
| diakopter | rakudo: proto foo(&a) { say 4 }; sub foo { say &^a }; foo(&foo); | ||
| p6eval | rakudo 6a43a3: OUTPUT«4» | ||
| diakopter | and the proto ran | ||
| jnthn | Hmm. That's a tad odd. | ||
| oh | |||
| I suspect it's a silly bug with & sigils. | |||
| diakopter | --silly_bugs | ||
| moritz_ | aye | ||
| jnthn | Wwe ain't been storing stuff with & sigils, so sometimes get tripped up on them. | ||
| I expect that to change in the new grammar. | 23:22 | ||
| moritz_ | pmichaud: p6eval's nqp: target now uses nqp-rx | ||
| jnthn | nqp: sub foo() { say "oh hai" }; my $x := &foo; $x() | 23:24 | |
| p6eval | nqp: OUTPUT«Unable to parse blockoid, couldn't find final '}' at line 1current instr.: 'parrot;Regex;Cursor;FAILGOAL' pc 6558 (src/Regex/Cursor-builtins.pir:179)called from Sub 'parrot;NQP;Grammar;blockoid' pc 4097 (gen/nqp-grammar.pir:1152)called from Sub 'parrot;NQP;Grammar;routine_def' p… | ||
| diakopter | nqp: say(234234234234234234234) | ||
| p6eval | nqp: OUTPUT«-5573438723989936774» | ||
| jnthn | nqp: sub foo() { } | 23:25 | |
| p6eval | nqp: ( no output ) | ||
| jnthn | nqp: sub foo() { }; say "ok" | ||
| p6eval | nqp: OUTPUT«Confused at line 1, near "say \\"ok\\""current instr.: 'parrot;HLL;Grammar;panic' pc 11756 (gen/hllgrammar-actions.pir:1131)called from Sub 'parrot;NQP;Grammar;comp_unit' pc 2155 (gen/nqp-grammar.pir:647)called from Sub 'parrot;NQP;Grammar;TOP' pc 605 (gen/nqp-grammar.pir:246)cal… | ||
| jnthn | nqp: sub foo() { }; say "ok"; | ||
| p6eval | nqp: OUTPUT«Confused at line 1, near "say \\"ok\\";"current instr.: 'parrot;HLL;Grammar;panic' pc 11756 (gen/hllgrammar-actions.pir:1131)called from Sub 'parrot;NQP;Grammar;comp_unit' pc 2155 (gen/nqp-grammar.pir:647)called from Sub 'parrot;NQP;Grammar;TOP' pc 605 (gen/nqp-grammar.pir:246)ca… | ||
| diakopter | parens | ||
| jnthn | nqp: sub foo() { }; say("ok"); | 23:26 | |
| p6eval | nqp: OUTPUT«ok» | ||
| jnthn | nqp: sub foo() { say "oh hai" }; foo(); | ||
| p6eval | nqp: OUTPUT«Unable to parse blockoid, couldn't find final '}' at line 1current instr.: 'parrot;Regex;Cursor;FAILGOAL' pc 6558 (src/Regex/Cursor-builtins.pir:179)called from Sub 'parrot;NQP;Grammar;blockoid' pc 4097 (gen/nqp-grammar.pir:1152)called from Sub 'parrot;NQP;Grammar;routine_def' p… | ||
| jnthn | nqp: sub foo() { say("oh hai") }; foo(); | ||
| p6eval | nqp: OUTPUT«oh hai» | ||
| diakopter | nqp: sub foo() { }; say(foo()); | ||
| p6eval | nqp: OUTPUT«Null PMC access in get_string()current instr.: 'print' pc 47485 (gen/nqp-actions.pir:3215)called from Sub '_block11' pc 0 (EVAL_1:5)called from Sub 'parrot;PCT;HLLCompiler;eval' pc -1 ((unknown file):-1)called from Sub 'parrot;PCT;HLLCompiler;evalfiles' pc 1224 (src/PCT/HLLComp… | ||
| jnthn | nqp: sub foo() { say("oh hai") }; my $x := &foo; $x(); | 23:27 | |
| p6eval | nqp: OUTPUT«Confused at line 1, near "$x();"current instr.: 'parrot;HLL;Grammar;panic' pc 11756 (gen/hllgrammar-actions.pir:1131)called from Sub 'parrot;NQP;Grammar;comp_unit' pc 2155 (gen/nqp-grammar.pir:647)called from Sub 'parrot;NQP;Grammar;TOP' pc 605 (gen/nqp-grammar.pir:246)called f… | ||
| diakopter | 'tis certainly speedyrific | ||
| jnthn | Yeah | ||
| pugs_svn | r28943 | moritz++ | [evalbot] filter out overlong error messages from nqp | ||
|
23:27
p6eval joined
|
|||
| moritz_ | nqp: sub foo() { }; say(foo()); | 23:28 | |
| p6eval | nqp: OUTPUT«Null PMC access in get_string()current instr.: 'print' pc 47485 (gen/nqp-actions.pir:3215)» | ||
| moritz_ | nqp: sub foo() { 3+4 }; say(foo()); | ||
| p6eval | nqp: OUTPUT«7» | ||
| diakopter | nqp: sub foo() { return(return); }; say(foo()); | 23:29 | |
| p6eval | nqp: OUTPUT«Null PMC access in get_string()current instr.: 'print' pc 47485 (gen/nqp-actions.pir:3215)» | ||
| moritz_ | much better | ||
| jnthn | nqp: class Foo { } | 23:30 | |
| p6eval | nqp: ( no output ) | ||
| jnthn | nqp: token package_declarator:sym<controller> { <sym> <package_def> }; controller Foo { } | ||
| p6eval | nqp: OUTPUT«Confused at line 1, near "controller"current instr.: 'parrot;HLL;Grammar;panic' pc 11756 (gen/hllgrammar-actions.pir:1131)» | ||
| moritz_ | it's not *that* magic ;-) | 23:31 | |
| jnthn | nqp: module NQP::Grammar { token package_declarator:sym<controller> { <sym> <package_def> }; }; controller Foo { } | ||
| p6eval | nqp: OUTPUT«Confused at line 1, near "controller"current instr.: 'parrot;HLL;Grammar;panic' pc 11756 (gen/hllgrammar-actions.pir:1131)» | ||
| diakopter | nqp: sub say(Any $a) { say 4 }; say(); | ||
| p6eval | nqp: OUTPUT«Routine declaration requires a signature at line 1, near "(Any $a) {"current instr.: 'parrot;HLL;Grammar;panic' pc 11756 (gen/hllgrammar-actions.pir:1131)» | ||
| jnthn | aww | ||
| ah well, worth a try ;-) | |||
| jnthn woulda been quite scared if that had actually worked. | 23:32 | ||
|
23:32
frew joined
|
|||
| diakopter | nqp: {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{say(4)}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} | 23:35 | |
| p6eval | nqp: OUTPUT«maximum recursion depth exceededcurrent instr.: 'parrot;P6object;HOW' pc 54 (runtime/parrot/library/P6object.pir:98)» | ||
| diakopter | aww | 23:36 | |
| my fav | |||
| sjohnson | diakopter: www.halolz.com/wp-content/uploads/2...omsjpg.jpg | 23:37 | |
| diakopter | ok; thanks! | 23:38 | |
|
23:42
wolverian joined
|
|||
| diakopter decides to (re-)join the parser-generator fun | 23:50 | ||
| pugs_svn | r28944 | lwall++ | [Cursor] more recursion warning suppression | 23:54 | |
| diakopter | tee hee | 23:55 | |
|
23:56
__ash__ joined
23:59
cj joined
|
|||
| cj | diakopter: you called the other day... | 23:59 | |