»ö« | 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 is␤in 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«foo␤foo␤»
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«foo␤foo␤» 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===[0m␤Preceding context expects a term, but found infix ~~ instead at /tmp/rGCBAFuAtO line 1:␤------> [32msub foo { }; foo ~~[33m⏏[31m Array;[0m␤FAILED 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===[0m␤Unrecognized backslash sequence: '\\v' at /tmp/bOK7p56U0D line 1:␤------> [32msay "\\v[33m⏏[31m"[0m␤FAILED 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 1␤in 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«1␤3␤StopIteration␤in 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 zero␤0␤»
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 s␤s␤»
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 0␤in 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 1␤current 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 1␤current 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 exceeded␤current 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