Camelia, the Perl 6 bug

IRC log for #perl6, 2010-04-22

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs

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

All times shown according to UTC.

Time Nick Message
00:02 lue o hi i'm back from p6l :)
00:04 nihiliad joined #perl6
00:17 pugssvn r30439 | jnthn++ | [t/spec] Fudge some tests that intermitently seem to fail for Rakudo at the moment in S14-role/anonymous.t.
00:24 madalu joined #perl6
00:36 dalek rakudo: 4a4fdca | jonathan++ | src/ (5 files):
00:36 dalek rakudo: Various fixes that gets role mix-ins working better. The main problem we faced is that we weren't doing the initialization of the new slots properly, but there were other bits too, including the ability to hold a role in a variable being broken (also now fixed). Includes some refactors that make things a bit neater, IMO.
00:36 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/4​a4fdca0a8f941a8d7c920375694074bb1dbd4d4
00:36 dalek rakudo: b367489 | jonathan++ | t/spectest.data:
00:36 dalek rakudo: Turn on S14-roles/anonymous.t, a test we never have been able to attempt before.
00:36 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/b​367489a785df894699dd3f21486ffd9945c893b
00:36 pmichaud good evening, #perl6
00:37 jnthn oh gosh, if it's evening in your timezone, what is it here... :-)
00:37 pmichaud I'm guessing 01:37 :-)
00:37 jnthn 02:37 akshually :-)
00:37 * pmichaud updates his internal timezone map.
00:39 lue pmichaud: O HAI!
00:39 lue .oO(a bit too excited eh?)
00:39 pmichaud lue: NO, NOT TOO EXCITED AT ALL!  GLAD TO SEE YOU!
00:39 pmichaud :-)
00:41 sorear must...resist...replying...to...lue...on...p6l
00:41 sorear pmichaud!
00:41 sorear Hi!
00:41 lue interestingly enough, I just sent thoughts on Temporal to p6l
00:41 sorear oh I give up.
00:42 lue I said that regarding jnthn and his timezones, not about what you said sorear :)
00:42 sorear pmichaud: Hi.  Rumor has it you're in charge of lvalue/rvalue issues in Parrot?
00:42 pmichaud sorear: while I know a lot about them, I don't think I'm "in charge of" them.
00:43 sorear it feels like nobody is dealing with the issues
00:43 pmichaud I've been asking about them for... oh, 2+ years now
00:43 sorear which is a shame, it seems like a major liability for interop efforts
00:43 sorear I thought I could at least get a tasklist from you
00:43 pmichaud I think that dealing with the issues requires a major rearchitecture of significant portions of Parrot
00:44 sorear do you think this is doable?
00:44 sorear (ever, not for R*)
00:44 pmichaud ever, certainly.
00:45 pmichaud I'm not sure how to accomplish it within Parrot's current deprecation constraints, though.
00:45 pmichaud i.e., it really needs a significant revamp of several of Parrot's core PMC types
00:45 pmichaud and the opcode set
00:45 jnthn *sigh* This darn .^methods bug would be a hell of a lot easier if Parrot gave me a line number in the backtrace that was actually inside the .sub where the error occurs.
00:46 lue lemme guess, it gives you the line the .sub is on, right?
00:46 sorear lue: that would be great
00:46 lue s/is on/starts/
00:46 jnthn lue: Worse, it seems to give me a line in a completely *different* sub, which is...erm...epicly confusing.
00:47 jnthn As is this bug generally.
00:47 lue sorear: what would be great? Is it about my p6l message? (In which case I agree :) )
00:47 sorear lue: Parrot giving line numbers inside the sub
00:47 lue ah
00:48 sorear as for p6l, I think we should complicate Instants a bit
00:48 sorear maybe not for core though
00:48 pmichaud were chromatic++'s line number fixes post-2.3.0?
00:48 lue jnthn: maybe some deep magic calls that other sub to breathe life into yours ?
00:48 jnthn pmichaud: Yeah, but I thought they were annotations ones rather than PIR ones.
00:48 jnthn pmichaud: I can hope though. :-)
00:49 jnthn I do optimism occasionally.
00:49 pmichaud hmm.  somehow I was under the impression they were PIR ones.
00:49 jnthn Maybe so.
00:49 pmichaud I wouldn't expect c to be working on annotation ones.
00:49 jnthn Yeah, well, I worked on them once. They worked. Then they got broke. :-/
00:50 jnthn I woulda blamed myself for not writing enough tests, apart from I found the ones I had wrote didn't actually still pass anyway.
00:50 pmichaud :-D
00:51 yinyin joined #perl6
00:51 lue must..resist....boredom....gak! (afk)
00:52 CokeBot9000 (parrot's deprecation contraints) - let the parrot team know what you think you need, and we can figure out a plan that fits in the constraints of the dep. policy.
00:53 bkeeler Ahoy there folks!
00:54 jnthn ahoj, bkeeler...ako sa mas? :-)
00:54 bkeeler Why yes, I'd love a beer, thanks
00:54 jnthn ...that was actually "how are you". ;-)
00:55 pmichaud reminds me of WYBMABIITY
00:55 pmichaud (sign posted in a pizza parlor I once frequented)
00:56 * jnthn misses pizza+beer
00:56 jnthn In Slovakia, they were pretty lax on who could serve alcohol, so a typical small pizza joint easily could.
00:56 bkeeler In all the best languages "how are you", and "can I buy you a pint" are the same
00:57 jnthn Here not so, you gotta to go to a restaurant really if you want beer with your pizza, it seems.
00:57 bkeeler Portland seems to have no problem with beer+pizza it seems
00:57 jnthn bkeeler: Well, "can I buy you a pint" works just great in English as a greeting too, in my book. :-)
00:57 jnthn Portland, as I remember it, has no problems with beer in general. :-)
00:58 bkeeler Indeed, good beer to be had here
00:58 bkeeler You should consider it when you're done with Sweden ;)
01:01 pmichaud bkeeler: ready to work on interpolation?
01:01 bkeeler Yep, sure am
01:01 bkeeler \o/
01:01 pmichaud okay, first comment is that your current patch is excellent; I just prefer things in a different location
01:01 bkeeler Heh, thanks
01:02 pmichaud so, if I suggest something that you've already done (and I missed), apologies in advance.
01:02 bkeeler I certainly considered putting it in nqp, but the prime motivator there was the need to call into the rakudo compiler
01:02 pmichaud we're going to abstract that out
01:02 bkeeler OK
01:03 yahooooo joined #perl6
01:03 pmichaud the general case is that we have some code we want executed (represented as a PAST tree), and in some cases we want to do something with the results of that code
01:03 pmichaud NQP already has a pasttype for this,   it's   PAST::Regex  with :pasttype<pastnode>
01:04 bkeeler Right; my first take tried to use that
01:04 pmichaud currently that code handles two cases
01:04 pmichaud er, three cases
01:05 pmichaud it handles the cases of   { ... },   <?{...}>,  and <!{...}>
01:05 pmichaud I want it to also handle the cases of  <{...}>   as well as variable interpolation
01:06 pmichaud (which is really expression interpoluation)
01:06 pmichaud *interpolation
01:06 pmichaud currently,  { ... }   is a PAST::Node with no :subtype
01:07 pmichaud <?{...}>  is a PAST::Node with :subtype<zerowidth>
01:07 pmichaud <!{...}> is a PAST::Node with :subtype<zerowidth> and :negate
01:07 bkeeler I note that there's also a separate 'zerowidth' flag that's not used
01:07 pmichaud oh, the code for this is src/PAST/Compiler-Regex, line 745
01:07 bkeeler Yep, I'm there
01:07 pmichaud checking.
01:08 pmichaud where do you see :zerowidth ?
01:08 bkeeler One thing I looked at was switching over to using the zerowidth flag, freeing 'subtype' up for something else
01:09 pmichaud a few other constructs in nqp expect to see zerowidth as the :subtype, though
01:09 bkeeler Yep, they'd need switching
01:09 pmichaud and it would require switching through nqp, because zerowidth gets used in a lot of places
01:09 pmichaud *throughout
01:09 pmichaud anyway, I'm pretty comfortable with subtype as it is, I think.
01:10 bkeeler It seems somewhat orthogonal to the things that subtype is used for, is what I was thinking
01:10 bkeeler Or, more to the point, subtype is used for lots of different unrelated things
01:10 pmichaud well, in many/most cases, zerowidth actually overrides the meaning of subtype, which is why I used it
01:10 pmichaud for example, the meaning of  <{...}>  is in fact quite different from the meaning of <?{...}>, yet STD parses the latter as a modifier of the first
01:11 bkeeler ah yes, Regex.pir defines a zerowidth attribute and accessors for it
01:11 pmichaud (unless the spec has changed again since I last looked, I should dbl-check real quick)
01:11 bkeeler Yes, true
01:11 pmichaud Oh, I think the Regex.pir part is a fossil.  I should review that and check.
01:12 pmichaud that looks like it's a fossil -- it's defined in Regex.pir but doesn't seem to be used anywhere.  Probably because I decided I liked 'zerowidth' better as a subtype (it was a separate attribute at one point)
01:13 bkeeler Trying to remember the problems I encountered using pastnode in my first cut...
01:13 pmichaud okay, so here's what I'd like for pastnode
01:13 pmichaud the existing definitions remain
01:13 pmichaud I'd like to add a new :subtype of 'match'
01:14 pmichaud or perhaps 'regex', or some other appropriate name.  I'm not sure what it should be.
01:14 pmichaud But :subtype<match>  should...
01:14 pmichaud 1.  Evaluate the PAST subtrue
01:14 pmichaud *subtree
01:15 pmichaud 2.  Look at the result of the subtree; if the result is a Parrot sub, then invoke it like a non-capturing subrule match
01:15 pmichaud If the result isn't a Parrot sub, then stringify the result and treat it like a literal match
01:15 pmichaud 3.  ...Profit
01:16 meppl joined #perl6
01:17 bkeeler That pretty much was my first take
01:17 bkeeler And I'm trying to remember what the problems were...
01:17 pmichaud I think all of the remaining items fall out of that implementation
01:19 bkeeler One problem I remember was when you have the PAST::Regex nodes somewhere under the PAST node supplied to a PAST::Regex<pastnode>
01:19 bkeeler All hell breaks loose
01:21 bkeeler Specifically all the boilerplate that goes at the start of every regex pir sub gets emitted again
01:22 pmichaud well, it should.
01:22 pmichaud it's technically a separate match.
01:24 pmichaud (and those regexes ought to be treated as separate subs)
01:24 bkeeler I think my reaction to that was to wrap it in a PAST:Block so it gets emitted as a new pir sub.  I think there were problems with that too
01:24 bkeeler Possibly I didn't try hard enough
01:24 pmichaud ah
01:24 pmichaud you're talking about the case of something like   <$a>, perhaps?
01:24 pmichaud where $a needs to be treated like a regex?
01:24 bkeeler That's part of the puzzle, yes
01:25 pmichaud s/treated/compiled
01:25 pmichaud that shouldn't happen directly in the :pasttype<pastnode> node.
01:25 bkeeler Which means I'd need to construct a PAST tree which does the compilation
01:25 pmichaud no.
01:25 pmichaud what should happen with <$a>  is that we generate PAST code that does the equivalent of    make_regex($a)
01:25 pmichaud that then returns a Sub that is the compilation of $a
01:26 pmichaud which the :pasttype<pastnode> then executes as a submatch
01:26 pmichaud which is what we wanted :-)
01:28 bkeeler I get strong deja-vu here, as like I said my first attempt was along these lines.  Trying to see if I see have that code around somewhere...
01:29 pmichaud one question I did have -- what does the spec expect with something like...   my $a = [<a b c d>];    say 'a' ~~ /$a/;  # ???
01:30 bkeeler It's not clear.  My patch currently would interpolate that as a|b|c|d
01:30 pmichaud right.
01:31 bkeeler It treats any Iterable that it gets back from the interpolated bit as an alternation
01:31 bkeeler which seems reasonable to me
01:31 pmichaud so, in that case we want the :subtype<match> case to also handle alternations
01:31 bkeeler Yep.  Further trickyness
01:32 pmichaud but I'm thinking it should be very similar code to what you already did in the patch, yes?
01:32 bkeeler Possibly
01:32 bkeeler But each of the elements of the Iterable has to be compiled
01:33 pmichaud I'd expect make_regex() to do that.
01:33 alester joined #perl6
01:33 bkeeler Where is make_regex?
01:33 pmichaud it'd be supplied by the HLL
01:33 pugssvn r30440 | jnthn++ | Tweak so that S02-magicals/pid.t can work on Win32 also.
01:33 pmichaud in other words, when we have something like   <$a>
01:34 pmichaud we end up emitting PAST that looks like
01:34 bkeeler As a method of the subclassed Cursor?
01:34 pmichaud it could be a method; I was thinking it'd be fine as a standalone private sub
01:34 pmichaud note that the PAST::Regex itself never calls make_regex directly, the HLL sets that up in the PAST tree
01:34 pmichaud (typing)
01:36 lisppaste3 pmichaud pasted "example PAST for <$a> for bkeeler++" at http://paste.lisp.org/display/98115
01:37 pmichaud the !make_regex sub is something that simply takes its argument and coerces it into an appropriate regex sub
01:38 pmichaud that the outer regex can invoke on the current match
01:38 pmichaud (note that this happens at runtime, not at the point where <$a> itself is being compiled)
01:38 pmichaud if $a is an array, then it builds an alternation
01:39 bkeeler I see
01:39 pmichaud if $a is a string, it compiles the string
01:39 pmichaud if $a is already a regex, it returns it directly
01:39 pmichaud we can then easily call back into the current regex compiler from !make_regex
01:40 pmichaud in the case of something like
01:40 pmichaud / $a /
01:40 pmichaud it's the same code, except we have a "!make_string"  private sub that tends to want to return strings instead of regexes
01:40 pmichaud and the HLL knows the difference based on what it's parsing
01:41 pmichaud (so it can choose the correct PAST structure)
01:42 bkeeler Fair enough
01:42 bkeeler My deja-vu sense is still telling me there's problems, but unfortunately it's not elaborating
01:42 bkeeler Hate it when it does that
01:42 pmichaud !make_regex and !make_string (or whatever we end up calling them) can also cache the regexes they see, so that if they encounter an already-seen value they return it directly instead of recompiling on each invocation
01:42 bkeeler I guess the thing to do is to try and see
01:43 pmichaud it might be easiest to try to get  <{ $a }>  to work in NQP.
01:43 pmichaud that way you're just dealing with nqp, instead of rakudo+nqp
01:44 pmichaud NQP even knows how to parse <{ $a }> already, it just doesn't set the :subtype
01:44 bkeeler Worthwhile having it there
01:44 pmichaud right.
01:44 bkeeler Seems like it might be handy for compiler-writers to have
01:44 pmichaud it can be, although NQP doesn't have the luxury of being able to provide a !make_regex function at runtime.
01:44 pmichaud althoguh maybe we can make that a standard part of the P6Regex library.
01:45 pmichaud that sounds useful-ish.
01:45 bkeeler I don't see why not
01:46 bkeeler Is there a better way of invoking the regex compiler other than the nasty stuff I do after the "# Kinda cheesy" comment?
01:46 pmichaud the code that handles <{ ... }>  in NQP is at src/NQP/Actions.pm line 778
01:46 pmichaud we just need to have
01:46 pmichaud method assertion:sym<{ }>($/) { make $<codeblock>.ast; }
01:47 pmichaud also set the :subtype<match>  flag on the codeblock ast
01:47 pmichaud which will tell it to act like a matching code assertion instead of an execute-only code assertion.
01:47 pmichaud (looking at regex compiler invocation)
01:50 jnthn rakudo: say Any.^methods
01:50 p6eval rakudo b36748:  ( no output )
01:50 jnthn Finally fixed. :-)
01:50 * jnthn waits for the spectest run before pushing
01:51 bkeeler Also, if "method assertion:sym<{ }>($/)" is responsible for setting subtype<match> it will overwrite subtype<zerowidth>
01:52 pmichaud backwards.
01:52 pmichaud subtype<zerowidth> ends up overwriting subtype<match>
01:52 pmichaud (which is what we want)
01:53 bkeeler Hmm, I distinctly remember breaking <?{...}> when I tried
01:53 pmichaud The <? ends up getting parsed as ? + assertion
01:53 pmichaud so,  we parse the {...} part as a normal assertion, giving us back PAST::Regex with :subtype<match>
01:53 pmichaud the ? then takes that AST as-is, but sets :subtype<zerowidth>
01:54 pmichaud i.e., it acts like a prefix operator
01:54 pmichaud we evaluate the operand before we set the :subtype
01:55 pmichaud the code that handles this is src/Regex/P6Regex/Actions.pm line 342
01:55 pmichaud on line 344, we check to see if the <?...> has an argument  (<assertion>)
01:56 pmichaud in this case,   <?{...}>,  the {...} is a sub-assertion produced from  assertion:sym<{ }>
01:56 pmichaud so, we get its AST  (line 345)
01:56 pmichaud change its subtype to 'zerowidth' (line 346)
01:56 pmichaud and use the resulting AST as the result of <?{...}>  (line 349)
01:57 pmichaud the prefix ! does the same thing, except it also inverts the :negate flag
01:57 bkeeler Seems sound enough.  I wish I could remember why it broke then...
01:57 pmichaud so that things like <!???!{ $foo }>   can work
01:58 bkeeler Ah well, like I say seems like the thing to do is go back and try again and see what problems I run into
01:58 Psyche^ joined #perl6
01:58 pmichaud yes
01:58 pmichaud and we can do baby-steps in NQP
01:58 pmichaud once the PAST::Regex structure is working, it's simply a matter of constructing subs to do the runtime handling of the dynamic values
01:59 pmichaud I think I need to add a 'rule' adverb to .compile
01:59 pmichaud so that we can compile starting somewhere other than TOP
01:59 bkeeler That would be swell
01:59 dalek rakudo: 6ee83f2 | jonathan++ | src/metamodel/ClassHOW.pir:
01:59 dalek rakudo: Fixes to method introspection so we can pass all of the tests on it again.
01:59 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/6​ee83f29fe42290cd8459249552a50f29764704a
01:59 dalek rakudo: 559b0ca | jonathan++ | src/builtins/Code.pir:
01:59 dalek rakudo: Tweak Code.name so it doesn't explode on PIR subs.
01:59 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/5​59b0cad0258959533ce905a71d3f2e65f1bf0d3
01:59 dalek rakudo: 5cf2126 | jonathan++ | t/spectest.data:
01:59 dalek rakudo: Turn on S12-introspection/methods.t.
01:59 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/5​cf21268b520a88de5870feb632bd16f8e044aae
01:59 dalek rakudo: 5707e67 | jonathan++ | t/spectest.data:
01:59 dalek rakudo: Turn on S02-magicals/pid.t, now that it's been tweaked to also work on Windows (presumably works elsewhere too; if not, it's easy enough to comment out again for the release).
01:59 pmichaud Cursor.parse already knows how to do that
01:59 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/5​707e672862299b4e19c2d275d1dbb68ab0edfd9
02:00 bkeeler Problem is all those contextuals that get set up in TOP and comp_unit
02:00 pmichaud right
02:00 pmichaud this will avoid those.
02:00 bkeeler They need to be there
02:00 pmichaud oh, yes.
02:00 pmichaud hrm.
02:01 bkeeler I made the appropriate change to .compile at one point and had it calling a different rule
02:01 bkeeler Even if I duplicated all the contextuals in my new rule, it still didn't work right
02:01 pmichaud yes, it will be hard to get those right
02:01 felipe joined #perl6
02:02 pmichaud I think we might go with the cheesy approach for now.  The nice thing about the way I've factored it is that it doesn't end up in the regex generated code -- it's factored out into !make_regex or similar.
02:02 pmichaud i.e., we don't have to have the regex compiler generate the code to call itself.
02:02 bkeeler true
02:03 jnthn OK, I'm done for tonight.
02:03 jnthn 4am. Oops!
02:03 bkeeler \o jnthn
02:03 pmichaud jnthn: turning in early, I guess?  ;-)
02:04 jnthn pmichaud: :-P
02:04 pmichaud jnthn: it's okay, we'll let you finish early tonight.
02:04 sorear pmichaud: People have talked about R* as being more than just a release of Rakudo.  Can you explain the difference between R* and Rakudo (say) #30?
02:04 pmichaud my intent is that R* will be a distribution release, not just a compiler release
02:04 jnthn pmichaud: I have no meetings this week, so I'm just enjoying being concious when I want to be to take advantage of this novelty. ;-)
02:04 jnthn sorear: See also http://wiki.github.com/rakudo/​rakudo/whats-going-into-rakudo
02:04 pmichaud the Rakudo releases we do now are just compiler releases
02:05 pmichaud R* will be a compiler release plus modules
02:05 pmichaud (whichever modules we think might belong in a distribution)
02:05 jnthn phenny: tell colomon Not sure that we'll make 31000 for the release tomorrow^Wtoday, but I got us 60 closer tonight anyways. :-)
02:05 phenny jnthn: I'll pass that on when colomon is around.
02:05 jnthn OK, I'm gone o/
02:05 pmichaud but the rakudo compiler repository will probably never be the place that we hold non-core module
02:05 pmichaud *modules
02:05 sorear what's sink context?
02:05 agentzh joined #perl6
02:06 bkeeler void context essentially I think
02:06 pmichaud we also want to introduce the notion that a distribution release may be (indeed will be) independent of compiler releases
02:06 pmichaud sink context eagerly evaluates its operand(s)
02:06 dalek rakudo: 98f05df | jonathan++ | docs/ChangeLog:
02:06 dalek rakudo: Some more ChangeLog entries.
02:06 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/9​8f05dfbb010ade0b5f751a50574ec4e2bf7025c
02:07 bkeeler Regular statements are in sink context unless they're the last in their block iiuc
02:07 pmichaud so, R* also intends to make the point that compiler improvements can take place independently of (and run ahead of) distribution releases
02:09 bkeeler pmichaud: Well, I guess I have enough to go on for now.  I'll get cracking over the next few days and ping you if I have problems, OK?
02:09 pmichaud so, it's entirely possible that a distribution release could be made using something other than the latest compiler release
02:09 pmichaud the focus of a compiler release is to be as true to the latest language specification as possible
02:09 pmichaud the point of distribution releases is to provide continuity across releases
02:10 pmichaud so a distribution release is more interested in backwards compatibility, library selection, and module compatibility than a compiler release
02:11 pmichaud and different distributions could choose varying criteria for when to issue updates
02:11 pmichaud some distributions may choose to emphasize stability and backports
02:11 pmichaud other distributions may want to emphasize leading-edge modules and features
02:11 pmichaud some distributions may be oriented towards web programming, or database programming, or whatever
02:12 pmichaud bkeeler: sounds like a great plan.  ping me when you run into difficulties.
02:12 bkeeler Willdo
02:13 bkeeler OK, time to cook up some noms and watch the Daily Show.  Back later probably...
02:18 pmichaud hugme:  add bkeeler to nqp-rx
02:18 * hugme hugs bkeeler. Welcome to nqp-rx!
02:18 pmichaud hugme++
02:25 pugssvn r30441 | pmichaud++ | [pm.txt]:  Added a new question for TimToady++:
02:25 pugssvn r30441 |
02:25 pugssvn r30441 | +Pm-20:  What's the result of something like...?
02:25 pugssvn r30441 | +            my $x = [<a b c d>];  'a b c d' ~~ / $x /;
02:25 pmichaud afk for a while.
02:43 cotto joined #perl6
02:44 rml_ joined #perl6
02:50 JimmyZ joined #perl6
02:51 sorear pm.txt eh?
02:55 colomon phenny: tell jnthn That's getting pretty close...  :)
02:55 phenny colomon: I'll pass that on when jnthn is around.
02:56 phenny colomon: 02:05Z <jnthn> tell colomon Not sure that we'll make 31000 for the release tomorrow^Wtoday, but I got us 60 closer tonight anyways. :-)
03:09 user253784 joined #perl6
03:40 meppel joined #perl6
03:44 snarkyboojum joined #perl6
03:55 molaf joined #perl6
03:55 drbean joined #perl6
04:06 lue echo "hello?"
04:09 diakopter std: my int[int] $foo = 1; # TimToady: does STD check that int[T] exists?
04:09 p6eval std 30441: OUTPUT«ok 00:01 108m␤»
04:11 lue ooh! what's that supposed to do?
04:12 diakopter I don't know.
04:14 diakopter I don't know whether it's supposed to be an array of ints, or if int is supposed to be a parametric type
04:15 diakopter it's confusing because [ ] is used for both <bleh>
04:16 diakopter rakudo: my Int[Str] $foo = 1;
04:16 p6eval rakudo 98f05d: OUTPUT«In "my" declaration, typename Int must be predeclared (or marked as declarative with :: prefix) at line 11, near "[Str] $foo"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
04:21 diakopter std: (my Int) $foo = 1;
04:21 p6eval std 30441: OUTPUT«[31m===[0mSORRY![31m===[0m␤Malformed my at /tmp/DOr0PRCfUJ line 1:␤------> [32m(my Int[33m⏏[31m) $foo = 1;[0m␤    expecting any of:␤   multi_declarator␤ scoped declarator␤        typename␤Parse failed␤FAILED 00:01 107m␤»
04:21 diakopter rakudo: (my Int) $foo = 1;
04:21 p6eval rakudo 98f05d: OUTPUT«In "my" declaration, typename Int must be predeclared (or marked as declarative with :: prefix) at line 11, near ") $foo = 1"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
04:32 nihiliad joined #perl6
04:34 REPLeffect joined #perl6
04:52 diakopter afk
05:00 ReiniUrban joined #perl6
05:07 hercynium joined #perl6
05:16 kaare joined #perl6
05:21 cognominal rakudo: say  'a, a ' ~~   / :s  a ** ','   /
05:22 p6eval rakudo 98f05d: OUTPUT«a␤»
05:22 cognominal rakudo: say  'a,a ' ~~   / :s  a ** ','   /
05:22 p6eval rakudo 98f05d: OUTPUT«a,a ␤»
06:02 lue goodnight moon
06:06 uniejo joined #perl6
06:12 ruoso joined #perl6
06:25 uniejo joined #perl6
06:34 XaeroOne joined #perl6
06:54 mberends joined #perl6
06:54 riffraff joined #perl6
06:54 justatheory joined #perl6
07:08 derpalerts joined #perl6
07:08 derpalerts left #perl6
07:08 steinberg joined #perl6
07:13 cotto joined #perl6
07:13 arnsholt joined #perl6
07:13 renormalist joined #perl6
07:13 mj41 joined #perl6
07:13 gabiruh joined #perl6
07:13 fda314925 joined #perl6
07:13 oskie joined #perl6
07:13 Tene joined #perl6
07:13 avar joined #perl6
07:13 literal joined #perl6
07:13 zamolxes joined #perl6
07:13 TimToady joined #perl6
07:13 pmichaud joined #perl6
07:19 szabgab moritz_, ping
07:25 dual joined #perl6
07:27 moritz_ szabgab: pong
07:27 szabgab gm
07:27 moritz_ (no, I won't make it to Berlin :/ )
07:27 szabgab :-(
07:28 szabgab is there anyone else working on Rakudo/Perl 6 who might come by ?
07:28 gurjeet joined #perl6
07:29 szabgab I mean to LinuxTag Berlin in June
07:29 moritz_ Su-Shee is based in Berlin... but I don't know if she's sufficiently involved to give a talk
07:30 iblechbot joined #perl6
07:47 XaeroOne joined #perl6
08:05 dalek rakudo: af152d7 | (Martin Berends)++ | src/core/Temporal.pm:
08:05 dalek rakudo: [core/Temporal.pm] give strftime() the previously forgotten %b and %B formats
08:05 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/a​f152d74e37e8155f777871683aef3d58c1172ea
08:07 XaeroOne joined #perl6
08:07 fridim joined #perl6
08:08 pugssvn r30442 | mberends++ | [DateTime.t] also test %b and %B in strftime()
08:09 mberends To accommodate more Temporal expectations without bloating the core executable, I am planning to move DateTime::strftime into a loadable module. The move will also validate how tools handle "core modules" (eg copying, compiling to PIR) beyond only Test.pm.
08:09 mberends If it works, I intend to gradually move more non essential code (a subjective call, admittedly) as possible into loadable modules. Which actual code moves is less important, using the capability is more important.
08:10 sorear by loadable module, do you mean something magic, or just an ordinary S11 .pm?
08:10 mberends the latter
08:13 moritz_ mberends: might I ask you to wait with that until after today's release?
08:17 * moritz_ would be happy if somebody could proof-read the release announcement
08:18 mberends moritz_: yes, good idea. I had read the changelog, will proof-read now :-)
08:23 mberends moritz_: the announcement looks nit-free to me
08:24 dalek rakudo: 05ee824 | moritz++ | docs/release_guide.pod:
08:24 dalek rakudo: [docs] update release guide
08:24 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/0​5ee824302efad96199a09392fa5ba29e6ab00e5
08:27 snarkyboojum nitpicks - "and their invitation of Jonathan Worthington" could be "and their invitation to Jonathan Worthington", and "release dates and codenames for 2010" could be "release dates and code names for 2010"
08:27 snarkyboojum :)
08:27 sorear mberends: What will the new API for strftime look like?
08:27 sundar joined #perl6
08:28 colomon rakudo: my %a; say %a.WHAT
08:28 p6eval rakudo af152d: OUTPUT«Hash()␤»
08:29 mberends sorear: hopefully "use DateTime::strftime" and then proceed as before
08:29 dakkar joined #perl6
08:29 sorear use Module::method?
08:30 sorear never seen that syntax before
08:30 moritz_ that would be another module
08:30 mberends sorear: there will be a DateTime.strftime.pm, precompiled to .pir
08:30 sorear ah.
08:31 * sorear wonders why Perl 6 grammars don't mingle action code with production rules
08:31 colomon rakudo: my %a; say %a.kv
08:31 p6eval rakudo af152d: OUTPUT«␤»
08:32 sorear Is there a good place to start looking if I want to understand how list context, list returns, flattening in map list returns, etc work?
08:34 pugssvn r30443 | colomon++ | [t/spec] Fudge out Hash extension tests, unfudge a test, change type of (1, 2, 3) from obsolete List to Parcel.
08:34 moritz_ sorear: S02 I'd think, maybe also S06
08:38 szabgab moritz_, unless someone else volunteers I'll try to represent Rakudo and Perl 6 on LinuxTag but I'd like to prepare a short presentation (< 5 min) that any one of the booth people could flip through
08:39 szabgab and show very interesting features of Perl 6
08:39 moritz_ szabgab++
08:39 szabgab wait with that
08:39 sorear szabgab++
08:39 szabgab I need your help to prepare it :-)
08:39 sorear let us know if real people are as universally hostile towards P6 as bloggers are
08:39 moritz_ ok, ++szabgab then :-)
08:40 snarkyboojum real people vs bloggers :) I like it
08:40 szabgab people quite liked it on CeBIT but I could only show random examples from my slides
08:40 szabgab I'd like to have some more focused thing
08:41 moritz_ szabgab: we've tried to collect examples for the book, you could steal there
08:41 szabgab and something that the other people - who might be less involved in Perl 6 - can also show
08:41 szabgab I'll look at that
08:42 moritz_ szabgab: if you want something to show off (and not explain in detail)...
08:42 szabgab I think I need items that can be understood while standing at a booth
08:42 moritz_ http://github.com/moritz/json/blo​b/master/lib/JSON/Tiny/Grammar.pm
08:42 szabgab but make it very interesting
08:42 szabgab junctions and chained comparision are nice (though the latter exists in Python)
08:42 moritz_ a complete JSON grammar
08:43 szabgab so we have to be careful not to oversell the idea
08:43 szabgab a simple grammar might be interesting
08:43 pugssvn r30444 | colomon++ | [t/spec] Fudge out two tests for Rakudo, change test which assumed Array is a List to use Seq instead of List.
08:44 scottamatot joined #perl6
08:44 szabgab some of the meta operators maybe
08:47 dalek rakudo: d50e92f | moritz++ | docs/announce/2010.04:
08:47 dalek rakudo: [announce] mention number of passing tests, and a nit pick from snarkyboojum++
08:47 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/d​50e92f66929fd1a9a440ec87fc3ac4fe91a47c0
08:49 pugssvn r30445 | colomon++ | [t/spec] Fudge out test with weird indeterminate results.
08:50 colomon moritz_: for what it's worth, I'm making a raid on LHF.  Have another 30+ passing tests here, just haven't checked in t/spectest.data yet.
08:50 moritz_ colomon: I can wait for a few more hours with the release
08:51 moritz_ btw I've estimated the number of total test for the announcment, not took the count from test_summary.pl
08:51 moritz_ that's inaccurate anyway, so quoting all 5 figures felt too stupid to me
08:51 moritz_ that's why I also gave the ratio of passing tests as two decimals only
08:52 colomon :)
08:52 moritz_ as a physicists I feel that the number of significant decimals should roughly present the accuracy of the number
08:53 moritz_ colomon: if you have some free time, you could also look at http://rt.perl.org/rt3/Tic​ket/Display.html?id=74526 and maybe apply it
08:53 moritz_ would certainly be nice to have it in the release, if it's a good patch
08:59 colomon trying it now.
09:05 masak joined #perl6
09:06 masak halloj #perl6
09:06 colomon o/
09:06 moritz_ \o
09:06 mberends o/
09:06 masak pmichaud++ # readline example http://paste.lisp.org/display/98110
09:06 * moritz_ seems to walk in opposite direction of colomon and mberends
09:07 pmurias joined #perl6
09:07 colomon moritz_: running spectest, will push everything I've got here if it works.  (and then probably go back to bed.)
09:07 moritz_ colomon: ok
09:08 sorear when S02 says Num must be the "largest native floating point format that runs at full speed", does that include stuff like i386/SVID 'long double'
09:08 sorear 80 bits of data, 48 bits of mandatory alignment padding :/
09:09 moritz_ sounds like that decreases performance by clogging the caches
09:09 moritz_ so it doesn't run at "full speed" :-)
09:10 gurjeet joined #perl6
09:22 scottamatot left #perl6
09:31 sorear rakudo: say now.WHAT
09:31 p6eval rakudo d50e92: OUTPUT«Could not find sub &now␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
09:31 moritz_ rakudo: say time.WHAT
09:31 p6eval rakudo d50e92: OUTPUT«Num()␤»
09:31 sorear S02 defines 'now' as a grammatical builtin
09:31 sorear not a function
09:32 sorear which seems weird
09:32 sundar joined #perl6
09:32 sorear rakudo: say time.perl
09:32 p6eval rakudo d50e92: OUTPUT«1271927778.04165␤»
09:32 moritz_ but it's clear that rakudo will parse it a sub call if it doesn't know about it
09:33 Psyche^ joined #perl6
09:35 sorear hmm, S02 still talks about list context
09:35 Psyche^ joined #perl6
09:35 moritz_ why shouldn't it?
09:37 colomon moritz_: pushed with 30931 passing tests, including that patch.
09:38 moritz_ rakudo: print 30931/39e3
09:38 p6eval rakudo d50e92: OUTPUT«Confused at line 11, near "print 3093"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
09:38 moritz_ rakudo: print 30931 / 39e3
09:38 p6eval rakudo d50e92: OUTPUT«0.793102564102564»
09:39 colomon not quite 80%, alas.
09:39 moritz_ std: 30931/39e3
09:39 p6eval std 30445: OUTPUT«ok 00:01 109m␤»
09:39 colomon afk # back to bed
09:39 * moritz_ calls rakudobug
09:39 sorear moritz_: because, insofar as I understand it, list context doesn't exist anymore
09:39 colomon probably leftover remnants of Rat literals...
09:40 moritz_ colomon: what did you push? rakudo? or spectests?
09:40 pugssvn r30446 | moritz++ | [t/spec] re-fudge reduce.t for rakudo
09:40 * moritz_ also forgot to svn dcommit something yesterday night
09:42 Psyche^ joined #perl6
09:52 pugssvn r30447 | pmurias++ | [mildew] fix bug
09:54 sorear do we have any code examples using macros?
09:55 moritz_ there are some very basic tests
09:55 moritz_ but since nobody really implements macros yet, not much
09:59 iblechbot joined #perl6
10:02 dalek rakudo: 5c8257f | moritz++ |  (2 files):
10:02 dalek rakudo: enable three more test files that colomon++ fudged
10:02 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/5​c8257ffe409c16f0596246459df0d8914238a3e
10:02 moritz_ http://moritz.faui2k3.org/​tmp/rakudo-2010.04.tar.gz <- preview of upcoming release, please test!
10:02 masak sorear: have a look at the link at the bottom of http://feather.perl6.nl/~masak/
10:02 sundar joined #perl6
10:03 masak sorear: it's a presentation containing a few 'best guesses' of how macros will looks. they're by the end.
10:03 Alias_ joined #perl6
10:04 kst joined #perl6
10:05 Grrrr joined #perl6
10:06 yahooooo joined #perl6
10:06 daemon joined #perl6
10:06 frettled joined #perl6
10:06 mantovani joined #perl6
10:06 mdxi joined #perl6
10:06 gfldex joined #perl6
10:06 opx^away joined #perl6
10:06 Woody2143 joined #perl6
10:06 japhb joined #perl6
10:07 frettled joined #perl6
10:12 eiro joined #perl6
10:26 colomon blast, that's what I get for going to sleep
10:26 colomon or rather, trying to hack when asleep
10:27 colomon moritz_: sorry, my push didn't work.  you duplicated my test patch, and I've just pushed quester's patch.
10:30 dalek rakudo: d952fc4 | quester++ | src/core/ (2 files):
10:30 dalek rakudo: Fix Seq.perl to not say Seq.new(). Interim fix for Iterator.perl infinite loops.
10:30 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/d​952fc4b1d052c0b2f6cce2ae2f26ab813776a61
10:33 rv2733 joined #perl6
10:43 Xaero joined #perl6
10:46 gurjeet joined #perl6
10:49 clintongormley joined #perl6
11:01 slavik joined #perl6
11:22 moritz_ ok, I'll re-run the tests with the latest patch
11:22 moritz_ please don't commit anything to rakudo until I've tagged the release
11:26 mberends moritz_++
11:29 colomon moritz_++ indeed.
11:30 masak \o/ moritz_++
11:54 jnthn o/
11:54 phenny jnthn: 02:55Z <colomon> tell jnthn That's getting pretty close...  :)
11:54 jnthn Ooh, we're releasing?! :-D
11:57 jnthn moritz_++ :-)
11:57 meppl joined #perl6
11:58 moritz_ release tagged, tarball uploaded
11:58 moritz_ feel free to tore things apart again :-)
12:00 masak \o/
12:01 jnthn moritz_++ \o/
12:02 dalek rakudo: 43f1105 | pmichaud++ | docs/spectest-progress.csv:
12:02 dalek rakudo: spectest-progress.csv update: 402 files, 30887 (79.9% of 38645) pass, 0 fail
12:02 dalek rakudo: Failure summary:
12:02 dalek rakudo: S06-signature/named-parameters.rakudo passed 82 unplanned test(s)
12:02 dalek rakudo: S32-list/reduce.rakudo passed 4 unplanned test(s)
12:02 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/4​3f11058c86a0f893e46cb9b0e75440eb7228341
12:03 pmichaud good morning, #perl6
12:03 moritz_ http://rakudo.org/node/69 # announcment
12:04 * moritz_ hopes its visible for users that are not logged in
12:04 envi^home joined #perl6
12:04 * pmichaud checks
12:04 pmichaud looks visible to me.  I'm not logged in.
12:04 moritz_ great
12:05 pmichaud moritz_++   moritz_++
12:07 pmichaud Expressions that begin with a variable and end with a circumfix now properly
12:07 pmichaud interpolate into double-quoted strings, like "@array.sort()" or
12:07 pmichaud "%hash".
12:07 pmichaud Looks like the <key> got swallowed.
12:07 masak needs a layer of HTML escaping.
12:08 charsbar joined #perl6
12:08 moritz_ updated.
12:09 mariano__ joined #perl6
12:09 jnthn *postcircumfix
12:10 moritz_ fixed on rakudo.org -- too late for the mailing lists
12:14 jnthn It's not a big thing. :-)
12:14 pmichaud it's fine on the mailing list
12:14 * masak likes http://www.modernperlbooks.com/mt/2010/04/t​he-thing-about-volunteers-and-civility.html
12:14 masak chromatic++
12:16 * moritz_ was about to write something similar
12:16 moritz_ but it wouldn't have been comparable in eloquency
12:17 pmichaud I wonder about a companion post:  "The thing about anonymous trolls..."
12:18 araujo joined #perl6
12:18 pmichaud I like chromatic's post, but it misses something for me (more)
12:19 pmichaud I read the PerlMonks thread.  Like him, I was a bit disturbed by AnonymousMonk and others' postings. (more)
12:19 pmichaud I thought about speaking up, but then decided it wasn't worth my time.
12:20 moritz_ well, you can't convince the trolls. The question is always if you can convince the anonymous readers who don't speak up at all
12:20 pmichaud (wasn't worth my time more from a personal situation perspective, not that it's not worth anyone else's time to speak up.  I was very happy to see the people speaking out against the abuse.)
12:21 moritz_ and that's very hard to measure
12:21 pmichaud right.  So the piece that appears to me to be missing is that we need volunteers who are willing to speak up about such things.
12:21 quester_ joined #perl6
12:22 araujo joined #perl6
12:22 pmurias joined #perl6
12:22 moritz_ the thing with anonymous trolls is that they can say it's very easy to gain high quality contributors (<http://www.perlmonks.org/?node_id=835737>) and we can't really nail them down for not doing it for us
12:23 pmichaud oh, in that case it's really a case of someone totally not knowing what he/she is talking about
12:23 pmichaud the logic behind that post goes something like
12:24 pmichaud 1.  If we had people skilled for this task, Perl 6 would be done by now
12:24 pmichaud 2.  Perl 6 isn't done by now
12:24 pmichaud therefore, it's obvious we don't have people skilled for the task
12:25 pmichaud .... and the poster doesn't bother to look to see that the facts don't fit that particular logic.
12:25 pmichaud (or that the hypothesis in #1 is itself not self-evident nor true)
12:25 araujo joined #perl6
12:26 pmichaud indeed, the fallacies in that post are pretty glaring
12:26 moritz_ sure
12:26 pmichaud in particular, Perl did *not* grow out of a university setting.
12:27 moritz_ I just want to point out that if a named troll posted such a thing, I'd answer to all of his following troll posts by saying "please organize the contributors that you promised $here"
12:27 pmichaud indeed, very few successful marketplace languages come from universities.
12:27 quester_ BTW, has anyone fixed the first word on the second line of rakudo/docs/announce/2010.04 to say "April" instead of "March"?  rurban++ mentioned that about a day and a half ago...
12:28 moritz_ grrrr, didn't see it
12:28 pmichaud and I don't know if the anonymous monk of that post realized it, but he's essentially saying that "Larry Wall doesn't understand the theory of compiler design and is trying to put it in practice."
12:29 quester_ moritz_:  Yeah, these things happen
12:30 IllvilJa joined #perl6
12:32 araujo joined #perl6
12:34 SmokeMachine joined #perl6
12:35 quester_ Good night, everyone.  Happy release celebration!  Viva Moscow/Москва!
12:36 colomon (On finally reading some of that thread): Is it just me, or do the nay-sayers get shriller the closer we get to actually having Rakudo be useful?
12:36 moritz_ colomon: seems like it
12:37 moritz_ colomon: otoh I've seen a positive trend too
12:37 moritz_ colomon: this thread contains very unusual amounts of trolling, even for Perl 6 readiness discussion
12:38 masak I've definitely felt a positive trend lately.
12:38 smash_ joined #perl6
12:38 smash_ hello everyone
12:38 smash_ moritz_++ # release
12:38 masak \o
12:39 quester_ left #perl6
12:41 ruoso joined #perl6
12:41 moritz_ "This is a duplicate of #8045, which has been open since 2001.
12:41 moritz_ sorry, wrong paste
12:41 moritz_ "Moscow.pm also reminds that today (22 Apr) is the birthday of Lenin :-)
12:41 moritz_ "
12:42 moritz_ via email from Andrew Shitov :-)
12:44 moritz_ rakudo: say Date.today() - Date.new('2006-03-24')
12:44 p6eval rakudo 43f110: OUTPUT«1490␤»
12:45 jnthn moritz_: lol
12:45 moritz_ on 2006-03-24 was the first commit to languages/perl6 in parrot
12:50 pmichaud I'm wondering if I should write my own reply to the thread, or "don't bother".
12:50 pmichaud I have a lot of facts I'd like to see interjected.
12:51 moritz_ pmichaud: maybe a separate blog post would be more productive
12:51 pmichaud I suspect AnonymousMonk isn't interested in facts, though.  They interfere with his mission.
12:51 jnthn rakudo: say Date.today() - Date.new('2007-12-16')
12:51 pmichaud moritz_: yes, I meant as a separate blog post.
12:51 p6eval rakudo 43f110: OUTPUT«858␤»
12:51 jnthn That's how many days since my first commit to Rakudo.
12:52 jnthn My first commit added Junction.
12:52 smash_ trying to figure something to help with, but i'm a bit lost in the ROADMAP
12:54 alester joined #perl6
12:54 pmichaud "You get people skilled for this exact task, these skills are acquired in universities where professors teach courses...."    Hmm, who do we have working on the project?  Me, Ph.D. Computer Science, Full Professor.  Check.  Dr. Damian Conway -- check.
12:54 pmichaud Unfortunately, Larry Wall wouldn't qualify according to this criteria.
12:55 pmichaud So obviously we need to get rid of him if we want to finish Perl 6.  :-)
12:55 * moritz_ also seems to recall that jnthn, masak, arnsholt and $self have attended such courses
12:55 pmichaud allison++ is currently working on her Ph.D. in this, IIRC.
12:55 jnthn jnthn specialized in the field during his third year.
12:55 jnthn At some small insignificant university in Cambridge, England.
12:56 masak I've attended CS courses, but mostly on a very basic level, and mostly they all sucked.
12:56 moritz_ actually we have a pretty high density if CS related graduates (adn higher)
12:56 * masak hopes to graduate Real Soon Now
12:57 pmichaud "If you can't get real compiler people to use Perl6 and help with it, the average open-source rookie won't be able to deal with this..."
12:57 pmichaud I guess the list I gave above are all "average open source rookies".
12:58 * jnthn did courses in compiler construction, optimizing compilers, finite automata and regular languages, programming language history, type theory, formal semantics of programming languages...amongst others.
12:58 moritz_ maybe just link to the "YOU'RE NOT GOOD ENOUGH" shouting by mst :-)
12:59 jnthn That was quite a talk. :-)
12:59 arnsholt moritz_: I'm more of a natural language guy really, but yeah I know a bit about this
13:00 kaare joined #perl6
13:00 ReiniUrban joined #perl6
13:01 molaf joined #perl6
13:02 * masak is an average open source rookie
13:02 moritz_ on a totally unrelated note, http://funcall.blogspot.com/2010/04​/whenever-i-write-code-in-java.html captures pretty well some of my Java experience
13:03 moritz_ Java forces you to write things that are infered by the compiler anyway
13:03 pmurias joined #perl6
13:04 cognominal I have the dragon book, but I learn  mostly by reading code written by folks here. Anyway the Perl 6 grammar is nothing like anything done before.  So judging Perl 6 implementation by any existing metric does not make any sense. People must see for themselves to understand
13:04 mathw \o/
13:05 mathw Java-bashing!
13:05 mathw Also
13:05 mathw I'm doing Perl training at work again
13:05 colomon jnthn: I don't think they had most of those classes when I got my CS degree.
13:05 colomon There was a theory of programming languages course I took, in which I knew more than the teacher about C++.  :)
13:06 jnthn colomon: Yeah, apparently they're not all typically of offer.
13:06 jnthn Heh, anyone who knows about formal semantics probably doesn't want to think about C++. ;-)
13:06 cognominal "Whenever I write code in Java I feel like I'm filling out endless forms in triplicate."  Happy guy, objective-c is even worse in that respect.
13:06 mathw Yeah C++ and formal semantics are not good friends
13:07 colomon And there were two compiler construction courses, but they weren't offered regularly, so they never actually fit in my schedule.  (I tried.)
13:07 jnthn The opening lines from the lecturer on that course were something like, "Once upon a time, we had no formal semantics course. We released into the world the guy who went on to invent C++. We teach this course now to try and prevent a reccurence." :-)
13:07 colomon Most of my advanced CS courses ended up being AI courses.
13:08 * moritz_ lols, literally
13:08 smash_ i had 'formal methods' in my 2nd year
13:08 colomon Though I also had a nice course on IBM mainframe assembly language.
13:09 mathw I rather like C++, but I think it's more accidentally useful than brilliant
13:09 mathw But it's still better than Java :)
13:10 colomon :)
13:10 mathw sometimes I do get frustrated with some of the limitations on templates though
13:10 colomon I've never actually used Java, but that's certainly my impression: 90% of the verbose crap of C++, and with most of the powerful features turned off because they're too dangerous.
13:11 mathw yeah it's like C++ without any of the redeeming features
13:11 arnsholt There's one important redeeming feature of Java. Garbage collection =)
13:13 mathw meh
13:13 mathw it's overrated
13:13 mathw and you can always add it to C++ if you want it
13:14 arnsholt I have to admit that I'm a lazy bugger. I really like garbage collection
13:14 * moritz_ too
13:14 mathw Sometimes I use a language with it in and get kind of giddy
13:15 mathw Look! I think, I can just throw this away and someone will pick it up
13:15 mathw But then I run headlong into a brick wall
13:15 moritz_ also it's not so easy to add proper GC retrospectively
13:15 mathw because I'm writing in Java
13:15 mathw I guess I've used new and delete for so long, it doesn't bother me anymore
13:15 moritz_ happily there decent languages out there which use GCs
13:16 mathw true :)
13:16 colomon :)
13:16 * moritz_ points at the channel name
13:16 PerlJam mathw: "I guess I've been stabbing myself with a knife for so long, it doesn't bother me anymore"  :)
13:16 moritz_ well, once the nerves are all dead, you don't feel it anymore
13:17 colomon Really, if you're using a decent set of foundation classes, calling delete (directly) is pretty darned rare.
13:18 colomon And Perl 6 requires more calls to new than C++ does.  ;)
13:18 mathw I just... do it
13:18 mathw It doesn't seem to matter
13:18 moritz_ actually I find that I call .new in test code many times more than in regular code
13:19 mathw When I compare languages, GCness just doesn't factor into it
13:19 mathw moritz_: in test code, you're generally making a whole bunch of stuff for each few tests, so that's something I tend to do as well
13:19 mathw in real code, you tend to make a few objects and then squeeze them in various ways for some time
13:19 PerlJam mathw: statistics aren't on your side.  Most bugs, particularly the hard-to-track-down variety, come from improper memory management.
13:20 mathw Not here
13:21 mathw here they come from improper multithreaded resource handling
13:21 colomon PerlJam: I think there's a selection bias going on there.
13:21 mathw sometimes that does involve one thread deleting something while another thread is still trying to use it, admittedly
13:21 mathw they're always fun...
13:21 PerlJam mathw: well ... threads are just evil  ;)
13:21 mathw well actually they're usually quite easy to track down
13:21 mathw it's just hard to figure out how to fix them
13:21 mathw yeah threads are evil
13:22 mathw every time I write multithreaded code I think 'there must be a better way'
13:22 moritz_ just put in a sleep(1) in appropriate place to avoid race conditions :-)
13:22 smash_ if you need sleep's to avoid race conditions you're probably doing something wrong (or something nasty)
13:23 PerlJam It's interesting that the phrase "race condition" has crossed my conciousness twice in such a short time this morning
13:23 moritz_ smash_: I know. I wasn't serious
13:23 mathw I was working with a colleague earlier on a design
13:23 mathw We managed to design ourselves into and then out of a race condition
13:23 mathw We felt quite good about that
13:24 colomon Anyway, I don't love Perl 6 because it has garbage collection.   I love it because instead of saying
13:24 PerlJam (I was just chatting with a coworker about a program that it sucking resources and it appears that there's some race condition, but we can't spot it)
13:24 colomon for (unsigned int i = 0; i < p_trimloops.size (); i++)
13:24 colomon I can say
13:24 mathw It would have been embarrassing not to spot it
13:24 colomon for $.trimloops -> $loop
13:24 mathw colomon: oh yes I love that
13:24 smash_ moritz_: :)
13:24 mathw and I love it because I can say @things>>.frobnicate;
13:25 colomon nod
13:25 mathw and because I can say given $thing { when $condition {} when Trout {} when EndOfTheUniverse {} }
13:25 mathw and just because it's so awesome
13:26 colomon I found myself saying ~~ $x .. $y several times in my recent code, which Very Nice
13:27 colomon oh!
13:27 colomon just occurred to me that i've seen people implement +- as a Perl 6 operator which did a junction.
13:27 tpf|[particle] if you put a scalar on the right side of a ->, it gets invoked automatically?
13:28 colomon but for my work, it would be better if it made a range.
13:28 * [particle] takes off his gsoc org admin hat
13:28 moritz_ colomon: that's more useful most of the time
13:28 moritz_ [particle]: no
13:28 moritz_ [particle]: it treats it as a one-element list
13:29 moritz_ so colomon's example should probably be for @.trimloops -> $l { ... }
13:29 colomon indeed.
13:29 [particle] ok, that's what i was getting at, thanks.
13:30 colomon just a think-o.
13:30 [particle] glad it wasn't mine, this time ;)
13:31 colomon and that in itself is another cool Perl thing ... the sigil documents what type of variable it is.  :)
13:31 colomon (assuming you get it right!)
13:31 moritz_ :-)
13:31 moritz_ colomon++
13:32 colomon but yeah, my $work is filled with things like
13:32 colomon fabs(x - 1.0) < tolerance
13:33 colomon replacing that with ~~ $x +- $tolerance would be a big win in clarity.
13:33 [particle] |$x - 1.0| +-- $tolerance # dare to dream...
13:34 [particle] you'd probably want unicode characters there for | and +-, but i'm too lazy to look them up
13:35 ruoso joined #perl6
13:35 colomon I think you can't use |  | as a bracketing operator?  at least I tried and failed sometime last year.
13:35 PerlJam colomon: there's no such thing as "can't" in Perl 6 :)
13:36 moritz_ there's a prefix:<|> operator already
13:36 moritz_ that clashes with circumfix:<| |>
13:36 [particle] circumfix:<| |> would be tough, i fear, due to ... moritz_++
13:37 mathw the poor parser might find that quite painfulk
13:39 jnthn If circumfix is a term, and a prefix is an operator, maybe you'd get away with it in that the parser always knows which it's looking for. I'm not sure though.
13:39 moritz_ uhm, prefixes are expected in term position
13:40 masak hah! 'has' scoped only applies to methods. :)
13:43 jnthn moritz_: ah, yes
13:43 jnthn :-/
13:43 jnthn masak: ...and attributes and submethods... :-)
13:43 jnthn ...and regexes....
13:43 jnthn :-)
13:44 moritz_ and tokens, rules
13:44 masak not attributes, if you only mean the private storage location.
13:44 moritz_ (ok, that's cheating)
13:44 [particle] so, unicode to the rescue
13:44 masak and all the others are a kind of method, really.
13:44 jnthn masak: How so?
13:44 jnthn I read has-scoped as "available through an instance"
13:44 masak hm, ok.
13:44 jnthn That fits attributes and methods quite well
13:45 masak I was more thinking about it as 'doing lookup along the axis of inheritance'.
13:45 masak it's like we have these primitives at different levels of abstraction: blocks, routines, packages, and classes. and for each of these we have a type of variable: 'my', dynamic variables, 'our', and 'has', respectively.
13:46 PerlJam Hmm
13:48 PerlJam dynamic vars and "our" are the same thing.  "our" just modulates the scoping of a dynamic var's short name
13:48 masak this is news to me.
13:48 moritz_ PerlJam: that's not true
13:48 moritz_ afaict
13:49 masak I thought a dynamic variable could reach outside of its package, as opposed to an 'our'-scoped variable.
13:49 PerlJam great.  I'm always ready to adjust my mental model if it's wrong :)
13:49 moritz_ it was in perl 5
13:49 moritz_ our-scoped variables are just like my()-variables, except that there's also a way to access them from outside the package via the full name
13:49 masak conversely, an 'our'-scoped variable won't be visible if you're not in a block nested in a block with an 'our' declaration.
13:50 moritz_ just like my, exactly
13:50 masak right.
13:50 moritz_ but visible from everywhere via the full name
13:50 masak the main difference is where they install the variable.
13:50 moritz_ (unless you're in an anonymous package...)
13:50 masak my:lexpad::our:package
13:50 PerlJam perhaps it's just a vocabulary thing.
13:50 moritz_ masak: our: package+lexpad
13:50 masak moritz_: oh, indeed.
13:50 moritz_ dynamic variables look into caller's scopes
13:51 masak PerlJam: how couldn't it be a vocabulary thing? :)
13:52 masak std: class A { has $foo }
13:52 p6eval std 30447: OUTPUT«ok 00:01 109m␤»
13:52 masak std: class A { has $*foo }
13:52 p6eval std 30447: OUTPUT«ok 00:01 107m␤»
13:52 masak std: class A { has $^foo }
13:52 p6eval std 30447: OUTPUT«ok 00:01 107m␤»
13:52 masak I don't know what those last two mean :)
13:53 PerlJam I'm not sure what you mean by "dynamic var" I think.
13:53 * colomon wonders if STD just accepts any random non-alphanum character after the $.... ;)
13:53 masak seems to me 'has' more or less requires a '!' or a '.' twigil, if you're to use it for something useful.
13:53 moritz_ PerlJam: it's an overloaded term... I was refering to  contextual variables, actually
13:53 PerlJam okay, then the universe is sensical :)
13:53 masak PerlJam: simply a variable that does lookup back along the call stack, as opposed to back along nested lexical scopes.
13:53 moritz_ but "dynamic" always means "follows the execution path" in Perl 6
13:54 masak PerlJam: what do you mean by 'dynamic variable'?
13:56 PerlJam masak: they need 2 things in my head: 1) follows the execution path and 2) live in a package's symbol table
13:56 moritz_ well, to a degree you're right, I think
13:56 PerlJam our just installs a lexical alias for the shortname of the "package var"
13:56 moritz_ they do live in the PROCESS:: namespace, iirc
13:57 masak I've never thought of where they live, actually.
13:57 moritz_ but it would be a perl5ism to think that only our-variables can be temp()ed
13:58 PerlJam honestly, I've only rarely even thought of temp() in Perl 6.  :)
14:00 masak S02 introduces $*foo as 'dynamically overridable global variable'.
14:06 PerlJam Hmm.  Scope declarators have always implied a particular storage location to me.
14:06 PerlJam different declarator, different storage location
14:07 * moritz_ tests rakudo with latest parrot and immutable_strings merged
14:07 colomon moritz_++
14:10 nsh joined #perl6
14:10 moritz_ doesn't work
14:10 moritz_ Null PMC access in invoke()
14:11 jnthn schiese. :-(
14:11 jnthn moritz_: Where, and is there a backtrace?
14:11 moritz_ while compiling src/Perl6/Grammar.pm
14:11 moritz_ jnthn: yes, just a sec
14:11 jnthn oh damm, that's early.
14:12 moritz_ http://nopaste.snit.ch/20337
14:12 masak moritz_: looks like the one I had the other day.
14:13 jnthn :|
14:13 jnthn It's a crash in NQP then.
14:22 jnthn my @words := HLL::Grammar::split_words($/, $past);
14:22 jnthn In src/HLL/Actions.pm
14:23 sundar joined #perl6
14:23 jnthn That may be the issue. methods used to accidentally the namespace due to a Parrot issue that got resolved.
14:24 jnthn I'm doing other bits ATM but maybe try it with HLL::Grammar.split_words($past);
14:25 alester joined #perl6
14:28 moritz_ uhm, the files are full of ::method calls, if my ack-fu hasn't left me
14:28 takadonet joined #perl6
14:28 moritz_ not so bad as first though
14:30 moritz_ some of them are actually subs, most are pir::
14:33 cognominal hum, what is the standard way to convert a string to lower case in Perl 6?
14:33 moritz_ lc
14:34 sundar hi... In the Perl-5-to-6 tutorial in perlgeek.de, in 'Objects and Classes' it says "Public attributes are just private attributes with a public accessor. So for write access you always use the ! twigil." What does this mean?
14:34 charsbar joined #perl6
14:34 moritz_ sundar: it mean what is says... which part is not clear to you?
14:34 PerlJam that last sentence he quoted doesn't make sufficient sense to em.
14:34 PerlJam er, me
14:35 moritz_ jnthn: I now have a scary "solution" that involves hand-editing generated stage0 code
14:35 PerlJam (but it may just be because it's out of context)
14:35 moritz_ and that gets us much further in the compilation stage
14:35 masak I thought the same thing.
14:35 sundar later the code does "$x.c = 3;       # ok". If I the last sentence means wat I thought, shouldn't it be $x!c = 3;?
14:35 masak you don't need ! for write access.
14:35 moritz_ you need, if it's not marked as 'is rw'
14:36 masak I wouldn't have put it that way.
14:36 sundar moritz_: so you can write even to non-rw variables by using ! twigil?
14:36 masak it leads to the kind of confusion that sundar expresses above.
14:36 moritz_ sundar: from within the class, yes
14:36 masak sundar: inside the class, you can do $!c = 3. outside, you can't.
14:37 masak sundar: if you want a writable public attribute, you should say 'is rw' at its declaration.
14:37 masak sundar: and then $x.c = 3; when you want to modify it.
14:38 moritz_ ok, what should I write to make it clearer?
14:38 sundar so if a public attribute is not 'is rw', I can use only $x!c = 3;, and not $x.c = 3; even inside the class?
14:39 moritz_ sundar: correct
14:39 moritz_ because $x.c is actually a method call
14:39 moritz_ and not the attribute
14:39 * arnsholt takes a look at the NQP book
14:40 iblechbot joined #perl6
14:40 PerlJam arnsholt: what NQP book?  ;)
14:40 moritz_ So if you want to change the attribute, you
14:40 moritz_ need to use the C<!> sigil (unless the accessor is marked C<is rw>).
14:40 moritz_ is that clearer?
14:41 arnsholt PerlJam: Indeed. Hopefully I can add a bit of stuff at least
14:42 PerlJam arnsholt: I think it's still at the stage where anything would be an improvement (unless Pm committed a bunch of stuff lately and I didn't notice)
14:42 sundar moritz_: yes, though 'change' may be replaced with 'modify' or 'write to'...
14:42 masak sundar: you can't use $x!c inside the class either to mean that.
14:42 masak sundar: you'd just use $!c to mean the private attribute $!c on self.
14:43 masak $!c would mean a call to a private method c in the class.
14:43 arnsholt PerlJam: No, he didn't =)
14:43 masak er, $x!c would mean that.
14:45 sundar masak: umm, actually I'm quite confused right now as to when something gets interpreted as a method call and when an attribute access. Any place that has a detailed explanation (is the Synopsis easy to read?)?
14:45 masak I'd say S12 explains it quite well.
14:45 moritz_ sundar: anything with a . is a call to a public method
14:45 broquaint joined #perl6
14:46 moritz_ both $.method and $obj.method
14:46 masak except at that one point when it's declared :)
14:46 arnsholt There's only pmichaud working on the book so far, right?
14:46 moritz_ right ... :&
14:46 moritz_ arnsholt: last I looked there wasn't much in the book
14:46 PerlJam sundar: anything with a . is a method call
14:46 arnsholt moritz_: Yeah, there's just the preface
14:46 moritz_ $!thing is an attribute
14:46 * PerlJam is slow
14:46 moritz_ $thing!other is a call to a private method
14:46 arnsholt So, I figured I might be able to add some stuff as I hack on my Prolog project
14:47 arnsholt Another idea I just had was to look at the Perl 6 book and see if there's any interesting stuff I can nick from the parts about grammars =)
14:47 PerlJam arnsholt: the NQP book should have a good, small language example I think, but I'm not sure prolog is it :)
14:47 sundar So the only ways to access attributes are: $!thing inside the class, and $obj.thing outside the class _if_ thing is rw. is that right?
14:48 arnsholt PerlJam: Well, that was not the plan =)
14:48 PerlJam I was reading about Io the other day and though it might make a good "learning language" for NQP
14:48 moritz_ sundar: if you're talking about write access, yes
14:48 PerlJam s/though/thought/
14:48 arnsholt But seeing how I'm hacking using NQP, I might be able to add some more stuff
14:48 masak sundar: also, if it helps, I was mightly confused about exactly those aspects of Perl 6 until I had used them for a bit.
14:48 arnsholt NQP deserves more documentation
14:49 moritz_ sundar: please update the article you were reading... is it clearer now?
14:52 sundar moritz_: yes, that's much clearer. did you add the set_stuff method too now?
14:52 moritz_ sundar: yes, I did
14:52 moritz_ sundar++ # feedback
14:52 masak moritz_++ # reacting constructively to 'this needs to be improved'-type comments
14:53 * moritz_ hates it when line numbers in error messages point to empty lines
14:54 masak in 22nd century computer science, we will probably discover that those lines aren't all empty space as we previously thought.
14:57 TimToady .oO(Acme::Bleach)
14:58 * frettled was about to make a stupid comment regarding masak++'s blog entry, but realized the stupidity and just barely managed to use ctrl+u instead of enter.  :)@
14:59 masak frettled: sounds interesting. :)
14:59 masak was it stupid-silly or stupid-stupid?
14:59 frettled stupid-stupid
14:59 masak ok :)
15:00 frettled I thought I had a better example for class-based variables, when I suddenly realized that the example was actually contrived; I'd never do it that way in real code, I'd do something cleverer.
15:01 frettled But perhaps the right thing to do is to ask an experienced Java programmer: when TF do you _really_ need those class-based variables?
15:01 masak I figure the way I put it in that blog post will either give us a good suggestion for how to integrate class-based variables into Perl 6, or a non-contrived example of class-based variables, or both :)
15:02 frettled win-win
15:06 ruoso joined #perl6
15:07 ash_ joined #perl6
15:10 masak that's an interesting use of the word 'backported' in the release announcement. :)
15:10 masak 'Most of the DateTime built-in type has been backported from the "alpha" branch'
15:10 masak but the master branch is newer than the alpha branch...? :)
15:11 jnthn forwardported? :-)
15:11 moritz_ we lost the functions by the merge, and ported them back
15:11 masak ported into the FUTURE!
15:11 moritz_ back to where we need them :-)
15:11 ash_ i know a good use of class variables that need to be inherited
15:11 masak moritz_: I think we should stick with your usage, because then 'backport' in the case of Perl 5 becomes entirely non-inflammatory again :P
15:12 masak ash_: let's hear it.
15:12 moritz_ I think the perl point of view is that if you want something that's inherited, you use a method
15:12 moritz_ that can be an rw method
15:12 masak moritz_: yes, but that's still per-instance, then.
15:13 moritz_ unless it's a class method
15:13 masak what's a class method?
15:13 ash_ In an ORM, they are useful for Single Table Inheritance objects, the base object needs to keep track of its children as well as its current list of table columns, so, children classes can modify their parents row definition
15:13 ash_ there are other ways of doing that
15:13 moritz_ masak: one that doesn't access attributes (or calls methods that access attributes)
15:13 ash_ but an inherited class variable would make it a lot more simple
15:14 masak moritz_: ah, ok.
15:14 moritz_ method foo is rw { my $x }
15:14 masak moritz_: yes, that'd be the way to do it, I think.
15:14 moritz_ now you have an inherited class "variable"
15:14 masak or better yet, `my $x; method foo is rw { $x }` :)
15:14 moritz_ only downside: it's also writable from the outside
15:14 masak aye.
15:15 moritz_ masak: or even better: method foo is rw { state $x }
15:15 masak aye.
15:15 masak unless you want to access the same var from other methods.
15:15 moritz_ then you're breaking encapsulation
15:15 ash_ ruby has 5 types of variable scope: global, local, instance, class (inherited), and class-instance (not inherited)
15:16 ash_ they all seem pretty useful IMO
15:16 am0c joined #perl6
15:18 PerlJam ash_: useful in general, or useful in the context of ruby (and all of the limitations of that language) ?
15:18 rurban cygwin package for rakudo and parrot ready. now testing and uploading
15:19 ash_ useful from a OO perspective, they each serve a different purpose IMO in any OO language, if you don't have all of those then you'll probably find a way to add them, or something that acts similarly
15:19 masak thing is, there's not really a 'class scope' in any other part of Perl 6.
15:19 masak thanks to type objects and metaclasses, we seem to do fine without it.
15:20 PerlJam As long as Perl has facilities for handling whatever people want class vars for, then there will never be a need for class vars in Perl
15:20 ash_ yeah, i have noticed that, it seems odd... thats one thing i keep having to wrap my mind around
15:20 masak recall that 'class' as a concept isn't really (no pun intended) first-class in Perl 6.
15:20 ash_ yea
15:20 PerlJam But as soon as 6.0.0 comes out and a wider audience starts using it, maybe someone will find a really good reason for class vars.
15:21 PerlJam if so, we can add them then :)
15:21 masak PerlJam: or just do like moritz_ suggested :)
15:21 jnthn rakudo: my $first-class = class { method omg { say "yes I am!" } }; $first-class.omg
15:21 p6eval rakudo 43f110: OUTPUT«yes I am!␤»
15:21 masak jnthn: :P
15:21 masak jnthn: bad choice of words on my part.
15:21 masak I meant that there's no Class type.
15:22 REPLeffect joined #perl6
15:22 jnthn rakudo: my $x = "the answer" but role { method Numeric { 42 } }; say +$x;
15:22 p6eval rakudo 43f110: OUTPUT«42␤»
15:22 jnthn \o/
15:22 jnthn masak: No, true. There is a ClassHOW though. :-)
15:22 masak jnthn: yes, but when types start screaming at me, I kinda zone out.
15:23 jnthn WHY?
15:23 masak ...
15:23 jnthn :-)
15:23 slavik google responded to my resume :D
15:23 jnthn Actually .WHY is only conjectural at the moment, iirc.
15:23 PerlJam WHAT
15:23 slavik don't know why anyone here would care
15:24 ash_ google is a great company to work for (so i hear, i don't know from personal experience)
15:24 masak jnthn: S26 mentions it.
15:24 TimToady well, if you move to Mountain View, it could raise the value of my termite-ridden house.
15:25 slavik TimToady: I am staying in NYC :P
15:25 TimToady funny how ridden means the opposite of rid...
15:25 jnthn .oO( ridded? )
15:25 slavik TimToady: I watched your google tech talk
15:25 TimToady those were the early days of STD
15:25 slavik what surprised me was that at 20min (out of 60) you somehow realised you were running short on time
15:26 slavik TimToady: it's still a good insight into the idea behind perl6 :)
15:26 slavik I actually started wondering how easy it would be in embed parrot/rakudo/perl6 into C and such programs
15:28 TimToady at some point there was work on making parrot embeddable, but I don't know where that went
15:29 TimToady might've bitrotted by now
15:29 renormalist joined #perl6
15:29 jnthn I read that somebody recently did get it embeded into...Postgres, iirc.
15:29 TimToady and mod_parrot was a similar deal
15:29 slavik which reminds me ... who was working on mod_parrot?
15:29 slavik ^^
15:30 slavik bah!
15:30 * TimToady wins :)
15:30 slavik rakudo shouldn't ship without mod_parrot :)
15:30 * slavik discovered mason
15:30 PerlJam slavik: but without mod_perl6 is okay?
15:30 slavik PerlJam: no!
15:30 PerlJam :)
15:31 slavik mod_parrot implies Perl6
15:31 PerlJam obviously not to me
15:31 masak Rakudo Star might ship with it. Rakudo proper will not.
15:31 jnthn Right.
15:32 PerlJam heh ... though I just realized (thanks masak++) that when slavik said "rakudo", I was thinking "Rakudo Star"
15:32 madalu joined #perl6
15:32 slavik rakudo star?
15:32 masak Rakudo StarrrrRRRR!
15:33 PerlJam masak: that'll be the september release
15:33 masak :P
15:33 masak slavik: http://use.perl.org/~pmichaud/journal/39411
15:34 ash_ i do think moritz_++ suggestion on using a method to simulate class variables seems fine by me
15:35 masak so now it's April, and the April release is out. I guess I've been wondering many times how it would feel to be at this point.
15:35 ash_ seems like an easy way to get the appropriate behavior
15:35 masak one thing is for sure: there are still things to do before the R* release.
15:35 PerlJam masak: anti-climactic?
15:35 masak PerlJam: well, not really.
15:35 masak there have been some exciting improvement thanks to nqp-rx.
15:35 masak things we couldn't do before.
15:36 masak but there's still a lot to do just to get back to what alpha does well.
15:36 masak and to making all our old examples work, the app cheese, the advent code, etc.
15:36 masak and the book still needs lots of love.
15:37 masak it's sort of "better than I feared but still far from ideal" feeling, I guess.
15:38 jnthn We've come a long way closer to what alpha could do during the last month. I'm comfortable we can do at least as well over the next month too.
15:39 PerlJam I'm happy the tests are coming back so well.  I thought we'd be a long time living up to alpha's standard
15:39 colomon If we make that much progress again, we will have surpassed alpha by a good bit.
15:39 masak what needs to happen for us to have named enums back?
15:40 PerlJam (I mean, I knew we'd have lots of features, but many of them would be new while the old ones we broke would languish)
15:40 CokeBot9000 mod_parrot is jeff Horwitz.
15:41 jnthn masak: Somebody to implement them.
15:41 masak jnthn: duh. could we look sometime at what the blocker actually was?
15:42 jnthn masak: Well, I know what the blocker in the approach we tried was.
15:42 masak I had it explained to me, but since I didn't fully grok it, it fell back out of my skull.
15:42 jnthn masak: But I'm not especially hurrying to work on named enums themselves given that even yesterday there was changes that would probably have an impact on them.
15:42 pmichaud masak: did you see my readline example in the backscroll?
15:43 rurban Is this now the "Rakudo Star" release?
15:43 pmichaud rurban: No.  And Rakudo Star has been delayed by a few weeks due to personal issues on my part.
15:43 rurban I see.
15:43 slavik if Rakudo comes on xmas, then Rakudo* will be easter?
15:44 masak pmichaud: yes; thank you very much.
15:44 [particle] rurban: rakudo star will be a set of releases on a different cycle, not the thursday following the third tuesday.
15:44 masak slavik: Rakudo comes on xmas, but only because it's released every month :)
15:44 rurban Shoudl I write this into my release announcement :)
15:44 slavik masak: so we get xmas every month? SWEET!
15:44 PerlJam christmas every month!
15:44 pmichaud (spending 19 nights in 4 different hospitals in march was Not Fun.
15:44 k23z__ joined #perl6
15:45 jnthn :-(
15:45 [particle] every day will be xmas after perl 6 is released
15:45 [particle] audreyt++
15:45 jnthn hugme: hug pmichaud
15:45 * hugme hugs pmichaud and blushes
15:45 masak [particle]: originally, that quote is from spinclad++, I think.
15:45 k23z__ Perl in a nutshell Perl, in a Nutshell
15:45 k23z__ Perl, in a Nutshellhttp://www.youtube.com/watch?v=Mxk5RMQF6Js
15:47 rurban So I'm writing about Rakuda Star: "It's not this April release though, most likely the next one"
15:47 masak or June.
15:47 PerlJam I wouldn't even say that
15:47 pmichaud Rakudo Star isn't *any* of the existing releases.
15:47 masak rurban: the initial estimate was 2010Q2.
15:47 pmichaud It's a distribution release instead of a compiler release.
15:47 rurban I was pointing to http://use.perl.org/~pmichaud/journal/39411
15:48 [particle] ah, spinclad++
15:48 PerlJam rurban: for what are you writing?
15:48 rurban The cygwin announcement
15:48 [particle] rurban: it's still targetted for 2010Q2
15:48 rurban Ok
15:48 pmichaud rurban: see also the discussion about R* at http://irclog.perlgeek.de/​perl6/2010-04-22#i_2251615
15:49 pmichaud today's release was never intended to be R* on its own.
15:49 pmichaud I had originally been targeting April 29 for R* release.
15:49 pmichaud I think jnthn++ and I have the consensus that R* will likely be sometime in June
15:50 rurban I will not get rakudo* as official package name
15:50 pmichaud rakudo-star works.
15:50 rurban rakudo-star-1.0 maybe?
15:50 pmichaud I'd probably like to avoid the 1.0 -- maybe 2010.06
15:50 pmichaud 1.0 sounds too much like we're saying this is a production-ready release.
15:50 pmichaud (at least to me)
15:52 pmichaud also, others see 1.0 as having that meaning -- e.g. http://en.wikipedia.org/wiki/​Software_versioning#Version_1.0_as_a_milestone
15:52 pmichaud "In contrast to this, the free-software community tends to use version 1.0 as a major milestone, indicating that the software is "complete", that it has all major features, and is considered reliable enough for general release."
15:52 pmichaud Rakudo Star definitely doesn't meet that criteria.
15:53 smash_ rakudo-star-0.1 ?
15:53 sundar pmichaud: yes, to me too, and even just Rakudo Star might give a wrong impression. Your dated idea might be good and necessary.
15:53 pmichaud I like dated releases and simple incrementing numbers.
15:53 sundar *dated idea => idea of using dates
15:53 pmichaud Dated releases are like automobiles -- if I tell you that I have a 2000 Volkswagen, that says a lot.
15:54 pmichaud Numbered releases provide sequence -- if I say it's the fifth model in the sequence, that's also saying a lot.
15:54 jnthn .oO( If it was a 2010 Toyota, it'd not responed to ^C )
15:55 PerlJam pmichaud: by contrast, saying this is the 28th release of Rakudo, doesn't quite have the same impact :)
15:55 pmichaud PerlJam: thus I give both.
15:56 pmichaud the sequence numbers give an idea of the number of releases between two events
15:56 pmichaud for example, how many releases were there between Perl 5.6 and Perl 5.8 ?
15:56 pmichaud can't tell by looking at those numbers
15:56 pmichaud when was Perl 5.6 released?  Can't tell by looking at the number.
15:57 pmichaud How old is Perl 5.6?  can't tell by looking at the number.
15:57 slavik since everyone here is a better language designer than I am, does Python's GIL make sense?
15:57 slavik my opinion is that it doesn't
15:57 PerlJam The other day, on another channel, some people were complaining about Perl 6 vaporware and I pointed out that there's a compiler release every month.  That was unsatisfying to them.   I wonder if any such timed releases would be so.  (say R* does a release every 6 months, "but is it *ready*?" will still be the question on everyone's mind)
15:57 pmichaud "ready for what?"
15:57 pmichaud Is Perl 5.12 ready?
15:57 TimToady WHY CAN'T YOU GUYS GIVE A STRAIGHT ANSWER!?!?!?   :)
15:58 PerlJam exactly :)
15:58 pmichaud TimToady: exactly :)
15:58 pmichaud actually, we could start giving a straight answer
15:58 slavik TimToady: that question sounds/reads weird coming from you ...
15:58 PerlJam but 5.12 doesn't have the vaporware stigma to overcome.
15:58 slavik pmichaud: xmas?
15:58 TimToady slavik: we don't like GILs here
15:58 pmichaud no, we could say "It's ready for limited purposes, and it's up to you to decide if it meets your needs or not."
15:59 pmichaud That's a reasonably straight answer; it's certainly not the "ready for what?" question.
15:59 slavik TimToady: I agree :) but wanted to ask someone who actually designed a language :)
15:59 PerlJam pmichaud: yeah, I tried that but got accused of claiming Perl 6 was production-ready when it is not.
15:59 TimToady I'd much rather go as far as we can in the direction of not needing locks in the first place
15:59 justatheory joined #perl6
16:00 pmichaud I don't know if TimToady qualifies as a language designer -- I don't think he has the necessary University background. </perlmonks>
16:00 TimToady well, maybe not as far as Erlang...
16:00 * pmichaud is still drafting his reply post to that.
16:00 slavik pmichaud: TimToady is probably more qualified since he's a languist ;)
16:01 takadonet pmichaud: which post?
16:01 pmichaud slavik: I was parroting a post from perlmonks
16:01 slavik oh
16:01 pmichaud takadonet: http://www.perlmonks.org/?node_id=835737
16:01 takadonet pmichaud: thanks
16:02 pmichaud I'm also quite enamored of the poster's assertion that TimToady is somehow an "open source rookie".  :)
16:02 rurban Ok, I will not mention rakudo-star yet
16:02 pmichaud or at least not a <em>real</em> compiler person.
16:03 pmichaud rurban: I plan to do a post explaining the status of Rakudo Star in the next day or so.
16:03 pmichaud Since I know a lot of people will say "it's April, what happened to Rakudo Star?"
16:03 rurban ok, thanks. we just have to plan a new name in advance
16:04 justatheory joined #perl6
16:04 pmichaud I was thinking of also putting a paragraph in the release announcement for #28 that said "This is not the Rakudo Star release", but it got out before I could write it up this morning.  :-)
16:05 slavik Rakudo ** ?
16:05 justatheory joined #perl6
16:05 pmichaud Entirely my fault there.
16:06 moritz_ pmichaud: I actually thought about the same thing
16:06 moritz_ pmichaud: and then decided that announcement clearly says what it is for
16:06 cognominal in a sense, the complainers miss the point. It does not take  only 10 years to release Perl 6. It took more than 20 years for TimToady to get the Perl syntax right.  And something as futile as paint color for most people.  "@jamesiry If the main diff between Scala and Clojure is syntax then the main diff between an F-22 Raptor and Boeing 777 is paint color."
16:06 moritz_ a development release
16:07 cognominal *And for something
16:07 pmichaud moritz_: yes, but I think it might've helped to also make it clear "up front" that "This is not the Rakudo Star release."  so that rurban's question doesn't come up as easily.
16:08 pmichaud maybe I'll draft my message as a followup announcement.
16:08 rurban They'll ask me first anyway.
16:08 moritz_ pmichaud: you're also welcome to update the release announcment on rakudo.org
16:09 pmichaud well, I mean others who may be also looking to download the April release because "Rakudo Star comes out in April and this is the April release."
16:09 pmichaud I had hoped to use March and April to set the stage and make the differences clearer, but failed on that.
16:09 rurban Ok, I'm releasing now.
16:12 moritz_ pmichaud: I have a patch for nqp-rx to build on latest parrot, just adding :nsentry to a method (once in the source, once in s0)
16:12 moritz_ pmichaud: should I push?
16:12 pmichaud moritz_: I thought I already fixed that in nqp-rx.
16:12 pmichaud can I see the diff?
16:13 pmichaud or tell me which :method gets the :nsentry ?
16:13 lisppaste3 moritz_ pasted "fix nqp-rx" at http://paste.lisp.org/display/98146
16:13 [particle] from backscroll... "releases between 5.6 and 5.8" isn't a good measure
16:13 [particle] there were 5.6 releases *after* 5.8
16:13 rurban BTW: rakudo-1.0 will be numerically lower than rakudo-2004, so we will have to make extra hints to sort it correctly (current, prev)
16:14 pmichaud rurban: I don't think there will ever be a rakudo-1.0.  See my comment above.
16:14 masak I think we should all learn to think of Perl 6 more like this: http://steveblank.com/2010/04/22/turn​ing-on-your-reality-distortion-field/
16:14 pmichaud I don't ever plan to go to major+minor release numbers.
16:14 masak and Rakudo.
16:15 rurban Ok. That's what I got from the version number discussion from two years ago also
16:15 pmichaud nor do I necessarily think there will be just one "rakudo"
16:15 xalbo joined #perl6
16:15 pmichaud rurban: was that the version number discussion about Parrot, perchance?  :-)
16:16 rurban I forgot everything. Something about x.3 or x.4 being the middle of the year stable releases. Totally logic
16:17 cdarroch joined #perl6
16:17 cdarroch joined #perl6
16:17 pmichaud That's Parrot.
16:17 pmichaud I've never liked that scheme.
16:18 pmichaud Not only that, but it's never been self-consistent.  Parrot's supported releases thus far are  1.0, 1.4, 2.0, and 2.3, and the next is 2.6.
16:18 tpf|[particle] i don't want to hear it. the 1.* release numbering was so wrong, it made me cry.
16:18 moritz_ well, the stable releases switched from twice-a-year to quaterly
16:18 pmichaud and they aren't "stable releases"
16:18 moritz_ pmichaud: have you seen the patch? (nqp-rx)
16:18 pmichaud which is *another* problem.
16:18 moritz_ right, "supported"
16:18 pmichaud moritz_: yes.  Apply it.
16:18 rurban I saw "supported"
16:19 pmichaud The only thing that Parrot's release numbers tell you is when a new year begins.
16:19 moritz_ pmichaud: now if you tell me how to update the copy of nqp-rx shipped with parrot, I'll do it too, and document it
16:19 pmichaud moritz_: actually, you only need to update the hll-grammar.pir file.  the -s0 file is generated.
16:20 pmichaud anyway, the steps would be:
16:20 moritz_ pmichaud: I needed to update the -s0 file, otherwise the compilate failed
16:20 moritz_ that's what boostrapping gives you, if the underlying platform changes :-)
16:20 pmichaud moritz_: oh, I see.  The trick there would be to build nqp-rx against 2.3.0 with the :nsentry flag, update the -s0 file using that, and then rebuild using trunk.
16:20 moritz_ right
16:20 pmichaud (since 2.3.0 supported :nsentry but didn't honor it)
16:21 pmichaud anyway, the steps are
16:21 pmichaud (1) patch nqp-rx, make test
16:21 pmichaud (2) make bootstrap-files, make test
16:21 pmichaud (3) commit the non-bootstrap files
16:21 pmichaud (4) commit the bootstrap files
16:22 pmichaud (5) copy the src/stage0 files from nqp-rx repo into the parrot repo
16:22 pmichaud (6) test parrot, commit the src/stage0 files in the parrot repo
16:22 pmichaud (done)
16:22 moritz_ thanks
16:22 pmichaud I tend to want to do the commits of the stage0 (bootstrap) differences as separate commits
16:23 moritz_ understandable
16:23 pmichaud so that it's easy to see what changed without being swamped by the large number of changes in the generated files
16:23 pmichaud anyway, the "transfer to parrot" is always simply copying the src/stage0/*.pir files into the appropriate place of the parrot repo
16:23 pmichaud (I guess we need to copy the tests too, perhaps)
16:23 moritz_ I'll put these steps into a new file in nqp-rx
16:23 pmichaud great, thanks.
16:23 PerlJam moritz++
16:23 moritz_ adding to the README feels wrong, most users don't care about it
16:23 pmichaud right.
16:24 pmichaud it can go in docs/
16:24 pmichaud (and it's okay to create docs/ :-)
16:24 dalek nqp-rx: 779f443 | moritz++ |  (3 files):
16:24 dalek nqp-rx: bump PARROT_REVISION and enable build
16:24 dalek nqp-rx: This is mostly a workaround for now, but a harmless one
16:24 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/7​79f44362cf51dae61936bb724b197e1e0118dcb
16:24 ash_ joined #perl6
16:32 finanalyst joined #perl6
16:32 finanalyst left #perl6
16:41 dalek nqp-rx: 515d267 | moritz++ | src/stage0/ (4 files):
16:41 dalek nqp-rx: update boostrap
16:41 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/5​15d267f19aea3b971adf9c18347e9dda2392fb2
16:41 dalek nqp-rx: d823fc2 | moritz++ | docs/bootstrapping.pod:
16:41 dalek nqp-rx: [docs] bootstrapping guide
16:41 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/d​823fc2d9ea6c8706c260937b34861c0596e6486
16:41 moritz_ jnthn++ # identifying the problem in nqp-rx
16:43 pmichaud we should eliminate that :nsentry entirely, btw
16:43 jnthn moritz_: Does Rakudo build on latest Parrot with this fix?
16:43 pmichaud something is doing a global namespace lookup that shouldn't be
16:43 moritz_ jnthn: nope, but it gets much further
16:43 jnthn I suspect an s/'::'/./ could do it in this case.
16:43 lisppaste3 moritz_ pasted "rakudo on parrot HEAD for jnthn++" at http://paste.lisp.org/display/98148
16:44 moritz_ it gets up to the point where it compiles the setting
16:44 jnthn Ouch.
16:44 jnthn That looks...bad.
16:48 moritz_ (that's with immutable_strings merged into master)
16:55 * jnthn afk for a bit
17:24 lihaitao joined #perl6
17:24 betterworld joined #perl6
17:25 moritz_ rakudo: my @a = 1,2,3,4; my %h; %h{@a[0]} = @a[1 ..^ +@a]; %h.perl.say
17:25 p6eval rakudo 43f110: OUTPUT«{"1" => (2, 3, 4)}␤»
17:37 pmichaud here's my draft response to the perlmonks thread -- comments welcome:   http://pmichaud.com/sandbox/response.txt
17:37 pyrimidine joined #perl6
17:37 pmichaud It still needs formatting and links added, but I have to go fetch lunch, so I'll work on that when I get back
17:37 pmichaud comments and suggestions welcomed.
17:38 pugssvn r30448 | moritz++ | [t/spec] test Seq.perl
17:41 pmichaud TimToady: I'd be specifically interested in any corrections if I've distorted reality surrounding your work on the grammar
17:41 pmichaud afk, lunch retrieval
17:43 sundar joined #perl6
17:43 moritz_ pmichaud++ great response
17:47 PerlJam The very last sentence evoked a TED-prize feel for me  :)
17:50 PerlJam BTW has anyone seen Randal's presentation at Texas LinuxFest 2010?  I almost thought Larry had paid Randal to mention him so many times  :)
17:50 mberends pmichaud++. But I would rather say "building on an unfinished toolset like Parrot"
17:51 mberends "the problems without Perl 6" makes no sense, should that be "with"?
17:52 colomon pmichaud++
17:52 pyrimidine (backlogging): hell, even I have a PhD.  Molecular Biology, yes, but still...
17:55 tpf|[particle] pmichaud++, but the last sentence in yoru postscript has a dangling modifier
17:55 tpf|[particle] better as "even the ones I disagree with or don't find interesting"
17:57 PerlJam pmichaud: The anonymonk is suffering a delusion that you don't quite excoriate him for.  "You get people skilled for this exact task!"  As if a *volunteer* project can just "get" whomever they choose.  It's *good luck* that we have the skilled people that we do have.
17:58 mberends "its [STD's] implementation is considered part of the spec." is a counterproductive claim as the P6 design process aims to get away from that aspect of P5. It also only borderline true, the Synopses should be the entire spec.
17:59 moritz_ mberends: you can't modify the grammar of different implementations in a consistent way without using the same grammar in all of them
17:59 moritz_ so STD is spec
18:00 PerlJam mberends: we're moving away from compiler implementation == spec, but the grammar implementation is another matter.  :)
18:00 jnthn pmichaud++ # very nicely written!
18:02 jnthn mberends: Many programming language specs include a formal grammar. Perl 6's just happens to be executable too. :-)
18:08 Grrrr joined #perl6
18:08 mberends joined #perl6
18:08 colomon joined #perl6
18:08 bbkr joined #perl6
18:08 LionMadeOfLions joined #perl6
18:08 tewk joined #perl6
18:08 dhoss joined #perl6
18:08 PerlJam joined #perl6
18:08 pnu joined #perl6
18:08 zibri joined #perl6
18:08 moritz_ joined #perl6
18:08 spinclad joined #perl6
18:10 lihaitao left #perl6
18:11 pmichaud mberends: (std as spec)  actually, I'm paraphrasing TimToady++ there.  He's often commented that STD should be considered spec as much as the synopses are.
18:11 pmichaud what we have to be careful of us to not let STD look too much like a complete reference implementation then :)
18:13 pmichaud PerlJam: I actually don't want to excoriate Anonymous Monk for that particular point.  The truth is, I can't really imagine that we'd get a better set of people to work on this project than we already have, volunteer or otherwise.
18:13 TimToady well, you might point out that my University degree was in "Natural and Artificial Languages"
18:14 pmichaud If I was working on Perl 6, who would I want to be working on it?  Larry Wall?  Check.  Damian Conway?  Check.  Allison Randal?  Check.  Jonathan Worthington?  Check.
18:14 TimToady pmichaud: ^^
18:15 pmichaud TimToady: okay, thanks.  What degree?
18:15 pmichaud Bachelor's, Ph.D, ...?
18:15 TimToady BA
18:15 pmichaud Okay.
18:15 TimToady also two years graduate work in Linguistics
18:15 pmichaud okay
18:16 TimToady at U.C. Berkeley
18:16 TimToady undergrad from Seattle Pacific University
18:16 pmichaud would you consider your language design experience to flow directly from your academic experience?
18:16 TimToady among other things
18:16 pyrimidine pmichaud: Not sure if this was mentioned, but I think that needs a full blog post.  Shouldn't be buried as a response to some troll.
18:16 pmichaud pyrimidine: it's there in the response. :)
18:16 TimToady certainly I studied the Dragon Book :)
18:17 pmichaud pyrimidine: "And I don't want my response buried in a thread somewhere, so it
18:17 pmichaud gets its own post."
18:17 pyrimidine yes
18:17 pmichaud I haven't decided whether the post should go to perlmonks or use.perl
18:17 pmichaud or somewhere else
18:17 pyrimidine blogs.perl?
18:17 PerlJam pmichaud: both!
18:18 pyrimidine I vote both as well.
18:18 pmichaud well, I prefer one with links from the others, I think.
18:18 pmichaud I want to revise the concluding paragraph a bit.
18:19 pyrimidine or, at least post to use.perl, point the troll to that (hopefully s/he can follow links)
18:19 pmichaud I'm really not after the troll.
18:19 pmichaud I'm after those who think that any of what the troll is saying makes sense.
18:19 pyrimidine true
18:19 pmichaud The troll himself/herself really needs some serious hugs.
18:19 TimToady I agree on the s/without/with/
18:21 justatheory joined #perl6
18:21 * pmichaud misses the without/with reference.
18:21 PerlJam what's it called when someone says "You just need to do ..."  ?   There's a whole lot of hand-waving behind that "just".  The anonymonk and his ilk still won't get that.
18:22 pmichaud ...because anonymonk thinks we're overly complexifying what (to him) seems like a simple thing to do.
18:22 pmichaud however, believe me, if anyone had a simple answer to Perl 6 development, I suspect they would've done it by now.
18:22 pmichaud Imagine the rewards and fame that would accrue!
18:23 diakopter heh.
18:24 PerlJam pmichaud: s/without/with/ on like the 8th paragraph towards the end .... "the problems without Perl 6"
18:24 TimToady re "without/with", see mberends's remarks at http://irclog.perlgeek.de/​perl6/2010-04-22#i_2253402
18:24 pmichaud thanks
18:25 pmichaud my ability to type lately has become much less precise.
18:25 ash__ joined #perl6
18:25 PerlJam pmichaud: you're just getting old  ;>
18:25 pmichaud I'm hoping it's not a symptom of a growing inability to think as well :)
18:27 pyrimidine left #perl6
18:27 pyrimidine joined #perl6
18:28 diakopter TimToady: yeah but, you could label your own degree program, right? :P
18:28 diakopter w
18:28 diakopter :
18:28 diakopter hm.
18:28 TimToady the Natural and Artificial Languages was a self-designed major, yes
18:30 TimToady and though it was Seattle Pacific College when I started, it was Seattle Pacific University by the time I graduated :)
18:30 pmichaud heh
18:30 * diakopter looks around in vain for masak
18:30 TimToady so I have a University education :)
18:30 TimToady not even counting Cal (and UCLA)
18:30 pmichaud all of the universities I graduate from changed their names after I left.
18:31 pmichaud *graduated
18:31 pmichaud and not even by a little bit
18:31 * diakopter wonders when they'll rename themselves Multiversities to reflect the relativism of Truth.
18:31 pmichaud Corpus Christi State University -> Texas A&M University-Corpus Christi
18:31 k23z__ it's a trap
18:31 pmichaud University of Southwester Louisiana -> University of Louisiana at Lafayette
18:32 diakopter or Pluraversities, I guess
18:33 diakopter or Antiversities
18:34 PerlJam "local maxima"  :)
18:35 PerlJam (yes, it's a long windy thought-path from riffing on universities to maxima/minima)
18:36 pmichaud I've never known PerlJam to be long winded.  :-)
18:36 TimToady "sufficiently enough" is kinda redundant
18:37 pmichaud now "sufficiently"
18:37 TimToady you misspelled Artifical
18:37 pmichaud I just updated the academic credentials paragraph and fixed without->with ; feel free to reload
18:38 pmichaud Fixed Artificial
18:39 TimToady you might be overusing the word "speculations" a bit
18:39 pmichaud yes, I do that sometimes -- get latched on a word and reuse it a lot
18:41 pmichaud speculations only used twice now
18:41 pugssvn r30449 | moritz++ | [t/spec] define that Rat.new() returns a kind of 0
18:41 TimToady after, "can be done by a few
18:41 TimToady dedicated undergraduates.
18:42 TimToady you might add "We already have lots of those kinds of languages."
18:42 pmichaud can I quote you on that?  ;-)
18:42 TimToady "Sure!"
18:42 moritz_ quoting is quite versatile in Perl 6 :-)
18:42 takadonet never seen so much effort put into a post
18:42 tpf|[particle] texas-quote him!
18:43 pmichaud added the quote
18:43 pmichaud oh, I'll do it as a link to the log here
18:43 TimToady s/kind/kinds/
18:43 pmichaud updated (changed the quote attribution)
18:44 pmichaud takadonet: oh, from my perspective, this is actually a quickly-put-together post
18:44 pmichaud relative to the time I've taken on some others
18:45 TimToady s/I suspect that the anonymous critics/I suspet that some of the anonymous critics/
18:45 tpf|[particle] how long did the treatise on microwaving grapes take?
18:46 TimToady you just got through saying that some of the anonymous critics were trying to discredit Pelr
18:46 TimToady Perl
18:46 pmichaud I'm still reworking the conclusion altogether
18:47 pmichaud so that last paragraph before the signature is going to be redone pretty significantly
18:47 pmichaud but I need a walk first
18:47 pmichaud keep suggestions and comments coming :)
18:47 pmichaud bbiab
18:49 stephenlb joined #perl6
18:50 sjn joined #perl6
18:50 pugssvn r30450 | moritz++ | [t/spec] test that you can call a method all(), and access attributes in there (RT #69202)
18:53 sundar degrees and backgrounds
18:53 sundar in language theory and practice.
18:53 sundar oops.. premature paste. :)
18:54 moritz_ std: /\G/
18:54 p6eval std 30448: OUTPUT«[31m===[0mSORRY![31m===[0m␤Unrecognized regex backslash sequence at /tmp/1R665RzhNw line 1:␤------> [32m/\[33m⏏[31mG/[0m␤Check failed␤FAILED 00:01 110m␤»
18:54 tpf|Coke pmichaud++
18:54 diakopter TimToady: it's the daw-PELR effect :P
18:56 sundar pmichaud: a few minor ones: "degrees and backgrounds in language theory and practice" might be better phrased "degrees and backgrounds in languages theory and implementation"
18:56 diakopter or pragmatics
18:57 sundar pmichaud: "Or, looking at it another way if you feel [...]" is easier to understand with a comma after "way"
19:00 justatheory joined #perl6
19:02 sundar pmichaud: in fact I don't see what purpose that sentence serves.
19:02 k23z__ P vs. NP   the epic battle  http://www.youtube.com/watch?v=HjUEEHTyhdA
19:03 sundar pmichaud: and a very minor one: "<em>that we're already doing</em>." would IMHO look better with an exclamation at the end.
19:04 * sundar thinks he might some day grow up to be a proofreader!
19:05 * moritz_ thinks that exclamation marks don't enhance credibility - rather the opposite
19:06 * PerlJam wonders how punctuation affects credibility at all except perhaps in a negative fashion  :)
19:08 * moritz_ just found out that rakudo probably passes ~250 tests more than noted in the release announcment
19:08 colomon moritz_: no way!
19:08 moritz_ I've used tools/update_passing_test_data.pl to find passing test files
19:09 pmichaud (that we're already doing)  I'm going to link to an example.
19:09 pmichaud I think it's better with the period.
19:09 moritz_ and it seems nobody looked that tool very closely in the last few months
19:09 moritz_ it started parrot -G perl6.pbc
19:10 moritz_ so... removing that -G, and re-running, revealed that two of the S05-mass files pass
19:10 moritz_ (I always run that tool with a ulimit set, otherwise it occasionally kills the computer)
19:11 colomon huh.  is there any way to use it to detect test files that work for a bit, then crash?  I've found that many of those only require a skip or two to get working....
19:11 moritz_ colomon: same tool, more or less
19:12 moritz_ colomon: it shows you how many tests pass before crashing
19:12 colomon moritz_: sweet
19:13 astrojp joined #perl6
19:13 moritz_ t/spec/S32-list/map.t is such a candidate
19:13 moritz_ oh, I don't like that file
19:13 moritz_ far too many tests for far too few features
19:13 colomon yeah, it's in the back of my head as trouble
19:14 * jnthn back after $cooking-adventure
19:16 colomon moritz_: if you skip the block that's crashing, map.t finishes with 16 errors.
19:16 moritz_ colomon: I'm currently re-working the whole test file
19:16 moritz_ colomon: currently it's 6 tests for a 5 elements return list
19:17 moritz_ I'm changing that to 2 each
19:17 colomon heh, I bet we pass more of it than alpha did when you're done.
19:17 moritz_ one length, one @result.join(', ');
19:17 moritz_ and the official cout will be much lower
19:17 colomon like on series.
19:17 colomon only with a length check too.
19:17 colomon nice.
19:19 moritz_ and the test descriptions just plain suck
19:22 * colomon looks forward to seeing a fixed version.  :)
19:24 moritz_ rakudo: my @list = 1 .. 5; say map {; $_ => 1}, @list
19:24 p6eval rakudo 43f110: OUTPUT«No candidates found to invoke␤current instr.: 'map' pc 345955 (src/gen/core.pir:19741)␤»
19:24 moritz_ why doesn't this list the candidates?
19:24 moritz_ rakudo: say ({; $_ => 1}).WHAT
19:24 p6eval rakudo 43f110: OUTPUT«Hash()␤»
19:25 moritz_ looks like a bug to me
19:25 colomon yup.
19:25 colomon rakudo: my @list = 1 .. 5; say map {say 'a'; $_ => 1}, @list
19:25 p6eval rakudo 43f110: OUTPUT«a␤a␤a␤a␤a␤1     12      13        14        15       1␤»
19:26 colomon moritz_++
19:29 pmichaud I've redone the paragraphs towards the end, changes start with "Personally, I'm impressed and honored..."
19:29 moritz_ most errors are non-sufficient Parcel flattening, afaict
19:30 moritz_ rakudo: say +(1, 2).map: {$_, $_}
19:30 p6eval rakudo 43f110: OUTPUT«2␤»
19:30 moritz_ should be 4
19:31 colomon right, I ran into that while doing $work the other day.
19:31 pmichaud more minor updates
19:32 molaf joined #perl6
19:32 pugssvn r30451 | moritz++ | [t/spec] rework map.t
19:32 pugssvn r30451 |
19:32 pugssvn r30451 | Replace excessive testing of elements with a single test for
19:32 pugssvn r30451 | @result.join($sep). Also adapt Rakudo fudging to current state-of-the-art.
19:33 tri1 joined #perl6
19:33 colomon pmichaud: can you repost the url?
19:33 pmichaud http://pmichaud.com/sandbox/response.txt
19:33 pmichaud (about to become response.html)
19:33 colomon danke.
19:33 snarkyboojum type here? "the community,  And"
19:34 snarkyboojum typo even :)
19:34 pmichaud reload -- you probably caught it in the middle of a save
19:34 pmichaud oh wait, comma instead of period.
19:34 pmichaud fixed.
19:34 snarkyboojum :)
19:34 PerlJam pmichaud++ the last two paragraphs are gold.
19:35 pmichaud Platinum is the metal of choice around our house lately.  Although I think Paula may be sick of it.  :-)
19:36 dalek rakudo: eb0d263 | moritz++ | tools/update_passing_test_data.pl:
19:36 dalek rakudo: [tools] run parrot without -G
19:36 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/e​b0d263256f127609791555ba045b267a803ec66
19:36 dalek rakudo: 7d43ee0 | moritz++ | t/spectest.data:
19:36 dalek rakudo: 4 more passing test files
19:36 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/7​d43ee0212cb57f54393ff309fb165bf6960fbd4
19:36 pmichaud (sorry, medical joke for those who didn't catch it)
19:37 colomon pmichaud: figured.
19:37 pmichaud http://en.wikipedia.org/wiki/Carboplatin   # platinum reference
19:40 colomon pmichaud++ # still a great post
19:41 snarkyboojum might have a newline between goal and s at "that our goal"
19:41 pmichaud snarkyboojum: thanks, fixed
19:44 pugssvn r30452 | moritz++ | [t/spec] calling a named parameter with empty name
19:44 mberends alpha: my @a="  aa "," b"; my @b=@a.map(*.trim);@b.join(":").say
19:44 p6eval alpha 30e0ed: OUTPUT«aa:b␤»
19:44 mberends rakudo: my @a="  aa "," b"; my @b=@a.map(*.trim);@b.join(":").say
19:44 p6eval rakudo 43f110: OUTPUT«␤Null PMC access in find_method('params')␤current instr.: 'perl6;Block;count' pc 502130 (src/gen/core.pir:77408)␤»
19:45 moritz_ rakudo: my @a="  aa "," b"; my  @b=@a.map(*.trim);
19:45 p6eval rakudo 43f110: OUTPUT«␤Null PMC access in find_method('params')␤current instr.: 'perl6;Block;count' pc 502130 (src/gen/core.pir:77408)␤»
19:45 moritz_ rakudo *.trim
19:45 moritz_ rakudo: *.trim
19:45 p6eval rakudo 43f110:  ( no output )
19:46 moritz_ rakudo: <a b c>.map(*.trim)
19:46 p6eval rakudo 43f110:  ( no output )
19:46 TimToady pmichaud's version sounds right to me
19:46 TimToady whoops, wasn't on the right page...
19:46 moritz_ rakudo: my @a="  aa "," b";  @a.map(*.trim);
19:46 p6eval rakudo 43f110:  ( no output )
19:46 moritz_ rakudo: my @a="  aa "," b";  my @b = @a.map(*.trim);
19:46 p6eval rakudo 43f110: OUTPUT«␤Null PMC access in find_method('params')␤current instr.: 'perl6;Block;count' pc 502130 (src/gen/core.pir:77408)␤»
19:46 mberends rakudo: <a b c>.map(*.trim).say
19:46 p6eval rakudo 43f110: OUTPUT«␤Null PMC access in find_method('params')␤current instr.: 'perl6;Block;count' pc 502130 (src/gen/core.pir:77408)␤»
19:47 moritz_ rakudo: <a b>.map(*.trim).eager
19:47 p6eval rakudo 43f110: OUTPUT«␤Null PMC access in find_method('params')␤current instr.: 'perl6;Block;count' pc 502130 (src/gen/core.pir:77408)␤»
19:47 moritz_ rakudo: say *.trim.WHAT
19:47 p6eval rakudo 43f110: OUTPUT«Block()␤»
19:47 moritz_ rakudo: say *.trim.params
19:47 p6eval rakudo 43f110: OUTPUT«Method 'params' not found for invocant of class 'Block'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
19:47 colomon !!!
19:47 moritz_ rakudo: say *.trim.signature
19:47 p6eval rakudo 43f110: OUTPUT«␤Null PMC access in type()␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
19:48 pmichaud .parameters, perhaps?
19:48 moritz_ .signature.somthing
19:48 moritz_ seems to be related to http://rt.perl.org/rt3/Tic​ket/Display.html?id=69362
19:49 colomon I had no idea *.method was implemented yet.
19:49 moritz_ rakudo: say (*.uc).('foo')
19:49 p6eval rakudo 43f110: OUTPUT«FOO␤»
19:49 jnthn .signature.params
19:50 jnthn rakudo: say &trim.signature.perl
19:50 p6eval rakudo 43f110: OUTPUT«get_attr_str() not implemented in class 'Perl6MultiSub'␤current instr.: 'perl6;Code;signature' pc 13389 (src/builtins/Str.pir:68)␤»
19:50 frettled pmichaud++ - I like that post.
19:50 jnthn ah.
19:50 jnthn I need to work out what .signature on a multi should do.
19:50 frettled I never saw whatever you responded to, pmichaud, but that doesn't matter - it stands on its own.
19:50 jnthn Obviously, not explode. :-)
19:50 frettled hm
19:51 moritz_ my first reaction is "junction", but that might not be quite right
19:51 frettled maybe explode is exactly what it should do
19:51 moritz_ don't think that blends well with the rest of Perl 6
19:51 frettled but then more like an exploded view than a huge scattering of wreckage
19:53 jnthn moritz_: Yeah
19:53 jnthn moritz_: I may stick in "junction of the signatures" and we see what happens. :-)
19:53 TimToady pmichaud: the final "continues" should be "continue" for parallelism
19:54 TimToady I'd also swap the "disagree with" and the "don't find interesting"
19:56 frettled jnthn: that phrase just begs for a netnews signature pun
19:57 mberends moritz_: the origin of the NPMCA in find_method('params') bug: http://github.com/masak/proto/bl​ob/master/lib/Installer.pm6#L576
19:58 moritz_ mberends: as a workaround, {.trim}
19:59 mberends thanks moritz_, will test immediately
20:00 colomon jnthn: meant to ask you, is there something weird going on with Hash attribute initialization in classes?
20:00 moritz_ rakudo: use Test; plan 1; isa_ok Hash, Hash
20:00 p6eval rakudo 43f110: OUTPUT«1..1␤Method 'isa' not found for invocant of class 'RoleHOW'␤current instr.: 'perl6;Any;isa' pc 9984 (src/gen/RoleToClassApplier.pir:556)␤»
20:00 moritz_ that's because Hash is a role, not a class
20:01 ShaneC joined #perl6
20:01 ShaneC left #perl6
20:01 moritz_ (maybe unrelated, but freaked me out while fudging some files a few days ago)
20:02 colomon specifically has %.bar is rw; in S12-class/attributes.t
20:02 colomon (role issue may be behind the scenes)
20:03 colomon isa_ok($foo.bar, Hash) fails.
20:03 colomon but the rest of the tests on %.bar are fine.
20:04 lichtkind joined #perl6
20:04 colomon when I looked at it, %.bar.WHAT was Hash, but %.bar.PARROT was nothing at all.
20:04 mberends moritz_: \o/ proto installs dependencies
20:04 colomon mberends: \o/
20:04 colomon that's awesome!
20:05 mberends colomon: proto installed mandelbrot earlier today... :)
20:05 jnthn colomon: I'm still not sure what to do with those isa tests.
20:05 colomon mberends++
20:05 jnthn If you re-write isa_ok $foo, Hash
20:05 jnthn as ok $foo ~~ Hash
20:06 jnthn Then it works of course.
20:06 jnthn In general, doing .isa on a role probably won't work out...
20:06 jnthn Or at lesat, doesn't make much sense to me.
20:06 jnthn Or asking if something isa role.
20:06 colomon and Hash is a role, eh?
20:07 jnthn It is, but I think we planned to change it back to a class.
20:07 colomon should it be doesa_ok or something?
20:07 jnthn Unfortunately, when I tried to do that, we get into trouble with Parrot's Hash type
20:07 jnthn Or something.
20:07 colomon Sounds like it's fine adding it as a TODO test, then.
20:07 jnthn colomon: tbh for *most* "is this the correct type" checks, I'd just write them in terms of smartmatch.
20:07 colomon s/adding/leaving/
20:08 jnthn It's the way I always encourage people using Perl 6 to do them.
20:08 jnthn Because it means you can refactor a class into a role or vice versa
20:08 colomon makes sense.
20:08 jnthn And not have to update your code all over the place that's doing the checks.
20:10 justatheory joined #perl6
20:10 pmichaud okay, semi-final draft now (with links) at http://pmichaud.com/sandbox/response.html  (note .html, not .txt)
20:12 pmichaud only question I have at this point is if someone would take my "even more garbage in public forms" link as meaning that schwern's post was itself garbage (as opposed to the garbage he was calling out)
20:12 pmichaud s/would/might/
20:12 mberends pmichaud: anonoymous in paragraph 3
20:13 pmichaud fixed "anonoymous"  (thanks)
20:16 mberends I still don't like "inadequate toolset", it's too deprecating
20:16 TimToady in as not being "real compiler people" or "open source rookies"
20:16 TimToady the "not" distributes badly
20:18 jnthn mberends: I read it more as "other people say this" than Pm stating it, fwiw.
20:18 mberends jnthn: it might be re-quoted out of context, "unfinished" or something is safer
20:19 k23z__ what's the closest recipe to mackerel + some sort of soup. I mean I don't know any recipe with this, does anyone here know one ?
20:20 mberends k23z__: please don't go off-topic during the current discussions
20:21 meppl joined #perl6
20:23 pmichaud mberends: "inadequate toolset" is what others claim
20:23 mberends jnthn: it might be re-quoted out of context, shooting your foot
20:24 mberends s/jnthn/pmichaud/
20:24 pmichaud the people making claims never say "unfinished".  Generally they say "broken" or even more colorful but-not-too-flattering
20:24 mberends just $0.02 worth ;-)
20:24 masak joined #perl6
20:24 kensanata joined #perl6
20:25 masak ahoj, #perl6!
20:25 m6locks hejsan
20:25 pmichaud agreed, the 'not' distributes wrong
20:25 jnthn ahoj, masak
20:25 pmichaud moved it inside the quotes, does that work?
20:26 pmichaud not quite.  :-)
20:26 TimToady well, I don't think the original was actually claiming we were open source rookies
20:26 pmichaud right
20:26 TimToady so I'd just drop that half
20:27 TimToady or modify it to point out that we have a lot of experience in nurturing open source rookies
20:28 SmokeMachine joined #perl6
20:28 hghgd_ joined #perl6
20:30 pmichaud rewritten.
20:30 * jnthn reading for a bit, then some Rakudo hacking
20:31 tpf|Coke does fperrad have a list he's working off of? I am always very surprised to see what he's checking in.
20:32 tpf|Coke ww
20:33 frettled pmichaud: in case you haven't changed it yet: yes, the direct link to Schwern's comment may be seen as criticism of him.  Okay, we here understand that it's not, but I think it would be smart to play it safe.
20:34 pmichaud frettled: I couldn't figure out a good way to reword it.  And I think it's better to link directly to the comment than the original post.
20:34 masak pmichaud++ # inspiring post
20:35 frettled pmichaud: Perhaps add a parenthetical remark "Schwern's response to idiocy" or something slightly more diplomatic?
20:35 Tene pmichaud: you could say something about "garbage that others need to clean up"
20:35 pmichaud yeah, I'll do Tene++'s suggestion
20:35 frettled Tene++ - better
20:35 pmichaud updated.
20:36 pmichaud updated again to say "that someone has to clean up"
20:36 Tene Yes, better.
20:37 mberends this collective editing is makes an outstanding post
20:37 frettled community++
20:37 pmichaud I find that collective editing makes for superior work, yes.  Indeed, that's the open source philosophy in many quarters.  :)
20:37 frettled It's like submitting a paper for review; first you use your colleagues and friends for a pre-review.
20:38 PerlJam frettled: only with a quicker feed-back cycle :)
20:38 frettled Yep, IRC is PDQ :)
20:41 masak diakopter: you sought me earlier?
20:41 pmichaud hmmm, perlmonks.org has gotten very slow suddenly
20:41 hercynium joined #perl6
20:41 masak others have been saying that today on Twitter.
20:42 mberends masak: $ proto install tardis # Downloading tardis...downloaded\nDownloading yapsi...downloaded\nBuilding yapsi...built\nBuilding tardis...built\nInstalling yapsi...installed\nInstalling tardis...installed
20:44 masak mberends: awesome.
20:44 masak mberends++
20:44 masak wait... is that proto running on alpha?
20:44 Tene So, I've moved in to an apartment in California, and worked for two weeks at my new job.  Still trying to get internet at home and furniture.
20:44 mberends cheese will be on the table shortly
20:45 mberends masak: on master
20:45 Tene Still exhausted every day when I get home, but looks like I'll be able to start working on projects again soon.
20:45 frettled Tene: goodie!
20:45 mberends Rakudo 2010.04 and Parrot 2.3.0
20:45 Tene I've missed working with all of you.
20:45 masak mberends: what, in that case, constitutes 'building' tardis and yapsi?
20:45 masak hugme: hug Tene
20:45 * hugme hugs Tene
20:46 frettled I still miss working :)
20:46 mberends masak: that's up to your Makefiles...
20:46 masak ooh! they're hardcoded, now I remember :)
20:46 mberends some specification required, and a new 'make install' protocol
20:47 Tene I haven't been following Perl 6 or Parrot dev in about a month.  Things still moving forward, I hope?  Have I missed anything exciting?
20:48 masak mberends: I might have time to co-evolve a specification and a core test suite this weekend. how about you?
20:48 masak snarkyboojum: o/
20:48 PerlJam Tene: not exciting, but cool that it works now ...   "%hash<key>[5].(<foo bar>) now interpolates in double quoted strings"
20:49 Tene perl6: say "{5}.frob"
20:49 p6eval elf 30452: OUTPUT«{5}.frob␤»
20:49 p6eval ..pugs, rakudo 7d43ee: OUTPUT«5.frob␤»
20:50 masak Tene: need final parens.
20:50 mberends masak: unfortunately there won't be much free time in the next few weeks, we'll have to use ad hoc occasions to exchange ideas
20:50 pmichaud oh wait, I just realized an important point missed in my response.
20:50 pmichaud fixing..... (tee hee!)
20:51 masak Tene: oh, and an initial sigil :P
20:51 Tene masak: I was checking that post-stuff didn't tack on to {} interpolation.
20:51 masak mberends: ok, what I need most from you is to do a quick mind-meld so I grok the current workage of proto. maybe I'll start by reading your excellent TODO list again.
20:52 masak Tene: oh, it won't. I saw jnthn implement it :)
20:52 masak jnthn++, I mean.
20:54 Tene :)
20:55 masak it was definitely that jnthn++ guy did it :)
20:56 frettled That jnthn++ guy certainly gets around.
20:56 PerlJam rakudo: say "{'wee'}.uc()"
20:56 p6eval rakudo 7d43ee: OUTPUT«wee.uc()␤»
20:56 PerlJam Hmm.  :)
20:57 pmichaud two changes:  I now added detail about "how you do that" in the first quotation from Anonymous monk, and return to that point at the paragraph that now begins with "Returning to the topic of..."
20:58 masak both seem good improvements.
20:58 frettled pmichaud: soon there are so many changes that it ought to have been a Wikipedia article ;)
20:58 pmichaud frettled: you should see how many changes my drafts go through *before* I tell people about them :)
20:58 pmichaud I've come to learn that I'm not a particularly fast writer.
20:59 frettled pmichaud: or perhaps I'd rather not, I suspect it's somewhat like my own posts used to be on netnews
20:59 frettled It's not the LOC or LOL (lines of literature), it's the QOC and QOL.  :)
20:59 pmichaud changed "lead implementor" to "primary implementor"
21:00 * PerlJam envies those people who can think the right words that concisely say what they want to express
21:00 pmichaud I can think them, just not always on the first draft :)
21:00 ReiniUrban joined #perl6
21:01 pmichaud But I take heart knowing that Winston Churchill put all of his speeches through incredible numbers of drafts and rehearsals as well :)
21:01 frettled Yep, there's usually a huge effort behind those things.
21:02 tpf|[particle] is that a fat joke?
21:02 * [particle] takes off his tpf hat
21:02 PerlJam it is now
21:02 [particle] :)
21:03 * pmichaud now wipes off his keyboard.
21:03 frettled :)
21:03 pmichaud okay, I'm done.  I'm posting it.
21:04 frettled \o/
21:04 * PerlJam is still a little irked by the anonymonk's idea that language design/compiler construction is like a recipe
21:04 [particle] we'll lput our further edits in a response to your post.
21:04 frettled PerlJam: But it is!  In compilers 101.
21:04 frettled ;)
21:05 PerlJam a dash of smart people, a sprinkle of programming, a bit of thinking ... mix well, et voila!  a language and a reference compiler
21:05 frettled or a huge mess, but who can tell the difference from ten feet away?
21:06 frettled (and therein lies the problem)
21:06 PerlJam frettled: what are you doing ten feet away?  You need to be closer.
21:07 frettled or 11 feet away, so that I could use my 11-foot pole
21:08 PerlJam Also, the naysayers who say the equivalent of "Perl 6 is too ambitioius.  Scale back the ambition and release something now!" bother me too.
21:08 PerlJam (but perhaps with better spelling)
21:08 frettled I sort of understand them.
21:09 masak I'm glad people are criticizing. that's, like, Ghandicon 2 or something. some of the people doing the criticizing are bound to be loud, irascible, and wildly wrong.
21:09 pmichaud uh, we are "releasing something now"
21:09 pmichaud I'm fine with criticism.  It's uninformed criticism that bugs me.
21:09 frettled But I think the problem with that criticism is that people get to see parts of the process that you traditionally _don't_ see as a layperson.
21:09 PerlJam pmichaud: but it's not a "real" release
21:10 masak PerlJam: now *that* argument I really hate. :(
21:10 pmichaud PerlJam: yeah, I know.  "What's a 'real' release?"
21:10 pugssvn r30453 | kyle++ | Test for RT 74448: eval of empty string should be Nil
21:10 PerlJam masak: indeed. That gets on my nerves too
21:10 pmichaud And why would anyone believe that 'now' and their notion of 'real release' are in any way compatible.
21:10 masak PerlJam: it usually comes right after I tell someone stubborn that yes, there are Perl 6 releases.
21:10 frettled In other words, people get information about what used to be an internal, semi-closed process, and therefore equate the stages of that process with what would normally be public at a much later stage.
21:10 masak PerlJam: and they go no-true-Scotsman on me as if that were something original.
21:11 frettled Personally, though, I think the misunderstandings are a price that's worth paying for the huge benefits of having an open process from the get-go.
21:11 masak me too.
21:11 PerlJam frettled: no, it's because Perl 6 was announced in 2000, so *anything* that has happened since should have gotten us a Perl 6 compiler by now
21:11 masak it's sometimes possible to get a sense of the silent majority, still waiting by the sidelines for something that they can take and use and enjoy.
21:12 PerlJam (this is one variation I see)
21:12 pmichaud Oh dear.  Has the clock already started on Perl 7, then, since we mentioned it?  ;-)
21:12 masak Perl 8!
21:12 frettled PerlJam: well, yes, the announcement happened when the process started instead of when the process was nearly complete, so those people got it bass ackwards.
21:12 frettled GoogolPerl
21:12 masak I wouldn't be here if it weren't for that announcement in 2000.
21:12 PerlJam I still blame orwant :)
21:13 masak neither, I guess, would a lot of other people.
21:13 frettled I wouldn't be here if I hadn't been to YAPC in Vienna, and just curiously joined in on one or two of the Perl 6 talks.
21:14 frettled So I hope I can spend the coming years contributing 10% of what masak++ has done.  That would be awesome.
21:14 boigaz joined #perl6
21:15 masak me? I'm just contributing to the torment of the developers. :P
21:15 frettled Yes, exactly, 10% of the pain.
21:15 pmichaud fast becoming a time-honored tradition, that.
21:15 PerlJam at least something is fast ;)
21:15 mberends masakism means self.torment(), apparently
21:16 masak still not up to that promised jackhammer speed, though.
21:16 masak I need to automate bug-finding a bit more...
21:16 masak massive testing of the app cheese is probably the way.
21:16 PerlJam masak: just write a Synopsis compiler
21:16 PerlJam masak: and run it on rakudo
21:17 masak :)
21:17 frettled BTW, I'm positively surprised that 5.12 got here so quickly.
21:17 masak obra++
21:17 PerlJam frettled: I bet you won't be so surprised when 5.14 gets here
21:18 mathw 5.12 is quite exciting
21:18 PerlJam I won't be surprised until 5.mumble *really* starts to look like Perl 6.
21:18 mathw I also noticed that it's called Perl 5 version 12, which I thought was quite nice
21:18 frettled PerlJam: Maybe I'm so deep in dementia that I'm constantly surprised by then.
21:18 frettled mathw: ooh, nice
21:19 masak mberends: subset DateTime::Formatter where { .can<fmt-datetime fmt-ymd fmt-hms> }
21:19 masak mberends: that looks... wrong.
21:19 masak the .<> will be seen as a hash slice on the .can method call.
21:19 masak probably not what was intended.
21:20 PerlJam add some parens
21:20 masak I will. just checking.
21:20 PerlJam (or a space)
21:20 masak nope.
21:20 masak it's a method call.
21:20 masak I didn't know .can accepted a list.
21:20 pyrimidine left #perl6
21:20 masak what does it return in that case?
21:20 frettled PerlJam: hmm, that comment of mine may have come off wrong; I'm merely implying that I might be slipping into dementia really quickly, not that 5.14 will wait until y2314.
21:21 masak (given that when it accepts a string it returns a dispatch order)
21:21 PerlJam frettled: heh
21:21 mberends it may well be wrong, it's not in use yet. I'm hoping to do plug-in formatters from loadable modules, to handle human languages and locales
21:21 rv2733 joined #perl6
21:21 masak mberends: I think you meant .can(all <...>) or something like that.
21:21 PerlJam yeah ... I was just about to say something like that
21:21 masak or something like that.
21:22 PerlJam (I would expect .can LIST to mean .can all LIST)
21:22 masak PerlJam: again, there's no such syntax.
21:22 masak std: .can <a b c>
21:22 p6eval std 30452: OUTPUT«[31m===[0mSORRY![31m===[0m␤Bogus term at /tmp/y1x7Hj9H46 line 1 (EOF):␤------> [32m.can <a b c>[33m⏏[31m<EOL>[0m␤Undeclared routine:␤  'c' used at line 1␤Parse failed␤FAILED 00:01 110m␤»
21:22 PerlJam er, modulo syntax :)
21:22 masak PerlJam: it's 2010! learn Perl 6 :P
21:23 PerlJam I don't write enough of it for some things to stick well.
21:23 masak I understand. just saying you should :)
21:23 PerlJam you're right.  I should
21:23 * masak prods PerlJam
21:23 frettled Perl 6: not sticky
21:24 masak but iffy and fiddly :)
21:26 masak mberends: also, should fmt-ymd really format the year as $dt.year.fmt('%04d'), rather than just '%d'? I haven't studied iso8601 closely enough, but it seems to me speaking of year 350 is better than 0350...
21:27 mberends hmm, %4d would be safer
21:27 masak or %d.
21:27 masak I think %4d would insert spaces, no?
21:27 PerlJam Perl 6 ... the 10,000 year language
21:27 masak didn't want to say it :P
21:27 mberends yes, so that the size does not vary
21:28 mberends ISO8601 should have the final word
21:28 PerlJam Besides ... that's a bug that can be fixed later ;)
21:28 masak mberends: that 4 feels arbitrary, and the spaces potentially bothersome.
21:28 masak mberends: kudos on strftime, by the way.
21:29 masak I don't think it needs to be moved to a separate file. let's spec it instead.
21:29 masak I suspect %a and %A will need to fall under the l10n part of the spec somehow.
21:30 masak at least if we're to stick to the unspoken "no names, just numbers" policy of the core module.
21:30 mberends masak: the implementation looks quite slow, if you study the algorithm. A comment also says so.
21:30 mberends words are ok if their source is pluggable
21:30 masak mberends: I know a better way to write that. care if I do it?
21:31 mberends and posix can be the default locale for names
21:31 mberends masak: so do I, but the time is better spent doing other stuff
21:31 masak mberends: loop and find all '%', switch on the letter after it. much less repetition.
21:31 masak oh, it'll only take ten minutes of my time :)
21:31 PerlJam where is this code you are looking at?
21:31 * masak does it now
21:32 masak PerlJam: src/core/Temporal.pm
21:32 mberends :-) yes, but not a switch, a hash
21:32 masak turns out the difference isn't that great.
21:32 masak but a hash might be better for other reasons.
21:34 mberends masak: a loadable module is an important facility we really should begin to use. strftime is a good use case for a module, there will be many others too, but we must begin somewhere.
21:34 frettled ISO 8601 uses four digits even for the year "0000".
21:34 masak I sit corrected, then.
21:34 PerlJam Hmm.
21:35 masak frettled: does it mention five-digit years?
21:35 mberends the details of strftime interest me less than the concept of slimming the huge monolithic core
21:35 frettled masak: yes
21:35 masak mberends: you're probably right about loadable modules. I was speaking of strftime in particular.
21:35 frettled "By mutual agreement of the partners in information interchange, it is permitted to expand the component
21:35 pmurias joined #perl6
21:35 frettled identifying the calendar year, which is otherwise limited to four digits. This enables reference to dates and
21:35 frettled times in calendar years outside the range supported by complete representations, i.e. before the start of the
21:36 frettled year [0000] or after the end of the year [9999].
21:36 frettled ow, hard newlines, hatessss them
21:36 frettled "
21:36 PerlJam I think scanning the string from left to right would closer match what POSIX::strftime does now
21:36 mberends rakudo: 12345.fmt("%4d").say
21:36 p6eval rakudo 7d43ee: OUTPUT«12345␤»
21:37 mberends rakudo: 12345.fmt("%04d").say; 12.fmt("%04d").say
21:37 p6eval rakudo 7d43ee: OUTPUT«12345␤0012␤»
21:37 pmichaud http://www.perlmonks.org/?node_id=836349  # now posted, more minor edits
21:37 PerlJam for instance ....  I think this version would turn "%%years" into "%10ears" rather than "%years"
21:37 pmichaud THANK YOU to everyone for your suggestions and help, the post is far better because of it.
21:38 TiMBuS joined #perl6
21:38 frettled pmichaud++ for taking the time and effort
21:38 pmichaud hugme:  hug everyone
21:38 * hugme hugs everyone and blushes
21:38 masak PerlJam: yes, you're right.
21:38 pmurias diakopter: hi
21:38 masak PerlJam: the %% case is what I'm thinking about now, though.
21:39 mberends PerlJam++:  re-ordering would fix that, but the algorithm still sucks
21:39 masak PerlJam: I basically need to take it out-of-band for the duration of the loop, and then reinsert a single '%'.
21:40 mberends it turns out that strftime() has several other locale dependencies, such as the '-' and ':' separators
21:41 frettled Yep.
21:41 mberends so making swappable formatters is quite crucial
21:41 masak aye.
21:41 masak it all needs to interact nicely with the locale business, too.
21:41 PerlJam "%%a" would become "%Thu" which would then become "21:41:35hu"
21:41 tri1 left #perl6
21:42 mberends and I figured that if we can do that, we can have swappable parsers too
21:42 PerlJam (assuming a loop)
21:42 frettled So %%ah would become %Thu would become 21:41:35huh ;)
21:42 mberends lol
21:42 masak PerlJam: that's wju I need to take %% out-of-band, as I said.
21:42 masak s/wju/why/
21:42 PerlJam right, just thinking out loud some more  :)
21:43 masak PerlJam: actually, maybe the right way to do this is to build a new string on the side from scratch.
21:43 masak somehow I sense that .comb figures into this, too...
21:44 masak the '%3N', '%6N', '%9N' cases complicate things a bit, though. but nothing that a regex wouldn't solve.
21:44 mberends it's very efficient to implement in C ;-)
21:45 mberends %9N failed in testing because of a Num restriction :-/
21:45 masak actually, I think those three are better handled separately.
21:46 * jnthn returns
21:46 mberends rakudo: my $second = 3.98765432;
21:46 p6eval rakudo 7d43ee:  ( no output )
21:46 mberends rakudo: my $second = 3.987654321;
21:46 p6eval rakudo 7d43ee:  ( no output )
21:47 mberends (blew up: no bigint lib loaded)
21:47 pmichaud also at http://use.perl.org/~pmichaud/journal/40322 .
21:48 masak mberends: part of why the current implementation is slow is that it makes a lot of method calls, whether they're needed or not.
21:48 masak pmichaud++
21:48 mberends masak: exactly
21:48 * masak makes a hash of closures
21:49 mberends masak: exactly, again
21:49 jnthn pmichaud++
21:50 frettled pmichaud** ? :D
21:50 wknight8111 joined #perl6
22:03 jnthn std: class C does OhNoThisRoleDoesNotExist { }
22:03 p6eval std 30453: OUTPUT«ok 00:01 107m␤»
22:03 diakopter TimToady: did you see my question about array declaration vs generic variable declaration
22:04 jnthn TimToady: ^ Maybe missing is_type call in module_name
22:04 jnthn s/is_type/is_name/
22:04 pmichaud bah, I'd like to add a reference to my post from chromatic++'s post but MT doesn't seem to know my username and doesn't want to let me register for a new one :-(
22:05 pmichaud if someone else is able to do that, that'd be great.
22:07 jnthn diakopter: I'd be curious to see that - what/when was it?
22:08 jnthn diakopter: Ah, found it.
22:08 diakopter jnthn: a day or two ago... I don't know.  I was complaining about my confusion over the use of [] for parametric types and also for array declaration
22:08 jnthn diakopter: It'd be an error.
22:08 diakopter probably resulting from my confusion over how it's spec'd
22:08 diakopter what was my question?
22:08 jnthn I think because of its position it'd be unambiguously parsed as a type name and thus a parametric type.
22:08 jnthn std: my int[int] $foo = 1;
22:08 jnthn That one.
22:09 p6eval std 30453: OUTPUT«ok 00:01 108m␤»
22:09 jnthn If you want an array of ints then
22:09 jnthn my int @foo;
22:09 jnthn or
22:09 jnthn my Array of int $foo;
22:09 jnthn my int[int] $foo; # fail because int is not a parametric role
22:09 diakopter std: my Array of Int[Array] $foo = 1;
22:09 p6eval std 30453: OUTPUT«ok 00:01 108m␤»
22:10 diakopter rakudo: my Array of Int[Array] $foo = 1;
22:10 p6eval rakudo 7d43ee: OUTPUT«In "my" declaration, typename Array must be predeclared (or marked as declarative with :: prefix) at line 11, near " of Int[Ar"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
22:10 diakopter jnthn: ok; thanks
22:10 jnthn afaict, STD doesn't worry about what kind of type things are
22:10 jnthn Just that they're type names.
22:11 jnthn In general, you can't know whether a given parameterization of a role is going to work out without actually getting all of the variants and trying the multi-dispatch.
22:16 jnthn TimToady: Ah, it's wrong to put the check in module_name.
22:16 jnthn (just tried and, yeah, epic fail :-))
22:16 jnthn Putting it in the trait_mod instead.
22:19 masak rakudo: say "foo".subst( /(o)/, { (~$0).uc }, :global )
22:19 p6eval rakudo 7d43ee: OUTPUT«Method 'postcircumfix:<[ ]>' not found for invocant of class ''␤current instr.: '!postcircumfix:<[ ]>' pc 10896 (src/builtins/Role.pir:78)␤»
22:19 rv2733 joined #perl6
22:19 masak was there a known workaround for this one?
22:20 masak (other than writing things out as a loop doing .index)
22:21 jnthn rakudo: say "foo".subst( /(o)/, "x", :global ) # does this work?
22:21 p6eval rakudo 7d43ee: OUTPUT«fxx␤»
22:21 jnthn rakudo: say "foo".subst( /(o)/, { "x" }, :global ) # this?
22:21 p6eval rakudo 7d43ee: OUTPUT«fxx␤»
22:21 masak sure. it's the $0 that's the problem.
22:21 jnthn rakudo: say "foo".subst( /(o)/, { $0 }, :global ) # this?
22:21 p6eval rakudo 7d43ee: OUTPUT«Method 'postcircumfix:<[ ]>' not found for invocant of class ''␤current instr.: '!postcircumfix:<[ ]>' pc 10896 (src/builtins/Role.pir:78)␤»
22:21 jnthn rakudo: say "foo".subst( /(o)/, { uc(~$/) }, :global ) # this?
22:21 p6eval rakudo 7d43ee: OUTPUT«fANY()ANY()␤»
22:21 masak or rather, its desigaring $/[0]
22:21 jnthn Oh
22:21 jnthn Well that explains a lot.
22:22 masak aye.
22:22 jnthn We ain't getting $/ in there
22:22 masak oh well.
22:22 jnthn So it's not a $/[0] problem at all.
22:22 jnthn Just a ENO$/
22:22 masak I'll push tonights patch as a branch, then.
22:24 ash__ joined #perl6
22:25 masak s/ts/t's/
22:26 masak mberends: here's how it ended up: http://github.com/rakudo/rakudo/commit/7​200c95898067d7454ae4bdc2ca4c28c292b6a1c
22:26 mberends looking
22:26 masak I don't know if the tests still pass, due to the above rakudoTODO.
22:27 jnthn I think the above rakudobug decidedly means the tests won't pass. ;-)
22:28 masak yeah, kind of a show-stopper.
22:28 jnthn rakudo: class C does OhNo { }
22:28 p6eval rakudo 7d43ee: OUTPUT«Null PMC access in type()␤current instr.: 'perl6;C;!class_init_11' pc 352 (EVAL_1:161)␤»
22:28 jnthn masak: Can you remember submitting that?
22:28 masak I can.
22:28 jnthn masak: If so, can you think what you may have called the ticket?
22:28 masak I've encountered it many times in the cheese.
22:28 * masak looks
22:29 jnthn I concluded it sucks and decided to make things better.
22:29 jnthn > class C does OhNo { }
22:29 jnthn Typename OhNo must be pre-declared to use it with does at line 1
22:29 masak jnthn: I called it http://rt.perl.org/rt3/Tic​ket/Display.html?id=66782 , it seems.
22:29 masak jnthn++
22:30 jnthn Also
22:30 jnthn rakudo: class A { }; class B does A { }
22:30 p6eval rakudo 7d43ee: OUTPUT«Method 'postcircumfix:<[ ]>' not found for invocant of class ''␤current instr.: 'perl6;ClassHOW;add_composable' pc 4100 (src/metamodel/ClassHOW.pir:185)␤»
22:30 jnthn Now you get the rather more helpful
22:30 jnthn > class A { }; class B does A { }
22:30 jnthn Can only use does with a role, but A is not one
22:30 masak \\oo//
22:30 jnthn Though I have the RT for that in front of me. :-)
22:30 * masak .oO( I'd rather have an RT in front of me... )
22:31 jnthn masak: Oh!
22:31 jnthn masak: I didn't mean *that* bug.
22:31 masak oh.
22:31 masak which one did you mean?
22:31 jnthn I meant the "class C does OhNo { }" gives a crappy error one.
22:31 masak oh, ah.
22:31 * masak looks
22:31 mberends masak: there will be a workaround way to apply the %substitutions hash in combination with substrings. It would be a pity to lose all the benefit because of an only partly related bug.
22:32 * lichtkind did http://www.perlfoundation.org/perl6/index​.cgi?perl_6_lookup_tablet#routine_traits
22:32 jnthn mberends, masak: I can have a peek at the bug and see if I can fix it.
22:32 mberends masak++ for the hash of closures, it's what I would have chosen too.
22:32 masak mberends: well, .=subst is really what we want here, because it's one-pass and doesn't have any problems with '%%'.
22:33 masak jnthn: only found this so far: http://rt.perl.org/rt3/Tic​ket/Display.html?id=74092
22:33 masak jnthn: sounds great!
22:33 jnthn mmm...yulia.
22:34 jnthn Sadly that bug is still there. :-/
22:36 masak jnthn: http://rt.perl.org/rt3/Tic​ket/Display.html?id=74032
22:36 masak the RT system and I are one.
22:36 * masak levitates
22:36 jnthn Excellent.
22:36 jnthn Typename Pet must be pre-declared to use it with does
22:37 jnthn :-)
22:37 jnthn masak: Well, you've put enough of you into it... :-)
22:37 masak I've created... a monster!
22:37 Matthias_ joined #perl6
22:38 * masak gets out of chair as RT stirs
22:38 Matthias_ Hey, does someone of you know how to become part of the perl 6 development network?
22:39 mberends Step right in here, sir!
22:39 masak Matthias_: yes. what do you want to know?
22:40 * masak and Matthias_ privmsg
22:41 hercynium joined #perl6
22:48 sundar masak: for the sake of the other would-be volunteers here, could you summarize anything helpful from the privmsgs?
22:49 masak oh, sure.
22:49 masak first I passed on this link: http://perlbuzz.com/2009/0​8/perl-6-is-my-mmorpg.html
22:50 masak it's written by some frood, forgot who :)
22:51 masak now we're talking about having fun and managing time and starting small.
22:55 ash_ joined #perl6
22:58 ash_ how goes it
22:58 masak still converging. :)
22:58 ash_ to zero or pi?
22:59 masak too early to tell.
22:59 masak hopefully to 6.0.0, though.
23:00 ash_ that would be cool
23:01 masak yes. I guess that's why most of us hang around here.
23:02 jnthn orly?
23:02 jnthn :-)
23:02 masak and for the beer, of course.
23:03 jnthn Yeah, that's why I'm here.
23:03 jnthn I occasionally write patches to keep that from being too blatant though.
23:03 jnthn .oO( I need a "Will patch Rakudo for beer" t-shirt )
23:04 * jnthn tries to further unbreak parametric roles
23:04 masak that's a bit like me. I pretend to find a lot of bugs and submit RT tickets, but I basically just hang around because I like the Camelia mascot.
23:04 masak I'm really not too interested in Perl 6 as such.
23:04 masak :D
23:05 * mberends hangs out here to be able to say that he hangs out here
23:05 masak ah, right. the hip factor. tres chic.
23:06 ash_ what does: class Foo { our $.a }; do?
23:06 pmichaud I hope some of the incredible coolness of some of the denizens here rubs off on me :)
23:06 pmichaud *citizens  # better
23:07 jnthn ash_: Nothing useful.
23:07 jnthn Probably makes Rakudo give you a stupid unhelpful error...
23:07 masak rakudo: class Foo { our $.a }
23:07 ash_ no error
23:07 p6eval rakudo 7d43ee:  ( no output )
23:07 jnthn heh. :-)
23:07 jnthn rakudo: class Foo { our $.a }; say Foo.new.a
23:07 p6eval rakudo 7d43ee: OUTPUT«Method 'a' not found for invocant of class 'Foo'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
23:07 pmichaud std:  class Foo { our $.a };  # curious
23:07 p6eval std 30453: OUTPUT«ok 00:02 107m␤»
23:08 jnthn pmichaud: "if it's also possible to quickly concatenate RSAs" - I think that some work when into making the join opcode do well.
23:08 jnthn pmichaud: Or did you mean, take two RSAs to make another one?
23:08 jnthn Rather than concantenate the things in the RSA?
23:08 ash_ i rather like the perl6 channels attitude towards programming, oh, and i can say i was apart of something maybe
23:09 pmichaud jnthn: the latter
23:09 jnthn Which latter? ;-)
23:09 jnthn two RSAs to one?
23:09 jnthn I guess your splice comment fits that.
23:09 pmichaud yes
23:09 jnthn splice is probably fastest.
23:09 pmichaud each POST::Sub ends up being its own CodeString
23:09 jnthn Ah, OK.
23:10 pmichaud those CodeStrings need to be concatenated, and it's not always the case that the CodeString generated later always comes after the previous one
23:10 jnthn nod
23:10 orafu joined #perl6
23:10 snarkyboojum joined #perl6
23:10 * jnthn wonders how compilation performs under latest Parrot
23:10 pmichaud i.e., the order of things in the final PIR output doesn't always match the order in which those things were generated.
23:10 pmichaud s/doesn't always/almost never/
23:11 pmichaud so one can't simply do a sequence of RSA.push and expect everything to work.
23:11 jnthn Sounds like we need some good solution then...the Rope thing sounds interesting.
23:11 pmichaud I suppose one could also stringify one RSA with a join and push it onto the other.
23:11 jnthn True
23:12 jnthn You still end up creating a bunch of intermediate strings though.
23:12 pmichaud but that also feels like we're just doing a bunch of string conc.... right.
23:12 jnthn Wonder if we can have a descendent join.
23:12 jnthn oh wait
23:12 jnthn It's an RSA so it can't ahve an RSA in it.
23:12 pmichaud at any rate, repeated concatentations is *very* common in HLL programs, so Parrot needs to be fast about it anyway, regardless of any Rope implementation.
23:12 jnthn d'oh.
23:12 jnthn Right.
23:13 pmichaud from a HLL perspective, the Rope tangent is a false lead.
23:13 jnthn I hope that doesn't mean that latest Parrot kills our compile performance.
23:13 pmichaud well, I'd think that we could find that out somewhat with NQP performance
23:13 jnthn ah, good point.
23:13 pmichaud if NQP takes significantly longer, then Rakudo will *really* take significantly longer.
23:13 jnthn Rakudo doesn't build on latest Parrot.
23:13 pmichaud because NQP also generates not-insignificant amounts of code.
23:14 jnthn Testing with nqp sounds sensible.
23:14 jnthn I don't expect Rakudo on latest Parrot to get unbroken in a great hurry.
23:14 pmichaud oh, I did.
23:15 jnthn I saw where/how it fails and it looks un-fun to hunt down. :-(
23:15 pmichaud 2.3 was a supported release, which means that major refactors land immediately after the release
23:15 jnthn Right
23:15 pmichaud so those refactors were the new strings implementation, :nsentry, etc.
23:15 jnthn Which is why we're broken on post-2.3.
23:15 pmichaud oh, I read "don't" as "didn't", sorry.
23:15 jnthn ah, OK. :-)
23:15 pmichaud I'm obviously over-tired again.  Plus I have to go buy some food and appliances for the house.
23:16 * jnthn as confused for a moment.
23:16 jnthn *was
23:16 jnthn I'll maybe see if I can unbreak it at the weekend.
23:16 jnthn Or we'll end up blocking because we want nqp-rx updates after not long, or something.
23:17 sundar masak++ # for the great article by some frood :)
23:17 dalek rakudo: 08c4cf0 | jonathan++ | src/Perl6/Grammar.pm:
23:17 dalek rakudo: Detect non type names in the does and hides trait mods, so we can give good meaningful parse time errors rather than crappy runtime ones.
23:17 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/0​8c4cf09e5d48b684e66198b83ed32127970e40d
23:17 dalek rakudo: 776e793 | jonathan++ | src/ (2 files):
23:17 dalek rakudo: Sensible rather than meaningless unhelpful error when using does trait mod on something that's not a role.
23:17 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/7​76e793c7d981a805995e728999399e110473767
23:17 masak sundar: thanks.
23:17 jnthn Yay, two more tickets just needing spectests. :-)
23:17 pmichaud afk, dinner and shopping
23:18 jnthn o/
23:18 masak last night I refreshed my memory on where it was I was blocking on GGE grammars.
23:18 masak thing is, PGE uses the fact that there's no invocant type checking in PIR.
23:18 masak so it actually calls Match methods on Str.
23:19 masak naturally, I can't do the same in Perl 6.
23:20 masak problem is, PGE has a flag on Match objects called 'iscont', which determines whether the Match should try to match all positions in succession, or just the one position.
23:20 ash_ do package variables work right now?
23:20 masak the 'iscont' flag is set when a Match is created from a Str, and unset when a Match is created from another Match.
23:20 masak rakudo: package A { our $b = 42; }; say $A::b
23:20 p6eval rakudo 7d43ee: OUTPUT«42␤»
23:20 masak ash_: seems like it.
23:21 ash_ rakudo: class Foo { our $.a }; $Foo::a = 4; # probably shouldn't work?
23:21 p6eval rakudo 7d43ee: OUTPUT«Null PMC access in getprop()␤current instr.: '&infix:<=>' pc 17061 (src/builtins/Junction.pir:224)␤»
23:21 ash_ rakudo: class Foo { our $a }; $Foo::a = 4;
23:21 masak in this rather ingenious way, only the outermost grammar rule has the 'iscont' flag set.
23:21 p6eval rakudo 7d43ee:  ( no output )
23:22 masak I'm at a loss for how to faithfully emulate this behaviour.
23:22 masak ash_: no, 'our' and the '.' twigil don't match meaningfully.
23:22 ash_ should that be an error?
23:23 ash_ std doesn't complain, but that doesn't mean it shouldn't....
23:23 masak it could probably be an error somewhere, yes.
23:23 masak but until it is, just try to avoid doing it :P
23:24 ash_ lol, it was an accident (at first), now i am just curious what it would mean, if it could mean something
23:24 pugssvn r30454 | jnthn++ | [t/spec] Re-fudge parameterized-basic.t role tests to remove a few for now that Rakudo can't yet handle.
23:24 masak ash_: I don't think it could.
23:24 masak it kinda tries to say two contradictory things.
23:24 masak the 'our' says 'install this variable name in the current package and lexpad'.
23:25 TimToady see S12:725
23:25 * masak shuts up and reads
23:25 masak oh, right.
23:25 masak TimToady: not sure I like that.
23:25 ash_ ah, so it should work, its just not
23:27 jnthn IIUC, it just means "it's a normal our variable + an accessor method for it"
23:27 jnthn But in that case
23:27 jnthn I'd imagine
23:27 jnthn our %!cache;
23:27 jnthn means
23:27 jnthn our %cache;
23:27 jnthn Which feels...odd.
23:27 masak does it work in a nested scope, such as a method?
23:28 masak also, I think calling them 'class attributes' is misleading, given that the variables won't inherit.
23:28 dalek rakudo: 0bea1f4 | jonathan++ | src/Perl6/ (2 files):
23:28 dalek rakudo: Fix to role type parameter handling so we don't get scoping of parameters wrong.
23:28 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/0​bea1f4247593cc7f029d18e65c810da976232f9
23:28 dalek rakudo: 3954332 | jonathan++ | t/spectest.data:
23:28 dalek rakudo: Turn S14-roles/parameterized-basic.t on again; we pass 18 tests in there after the previous fix.
23:28 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/3​954332f8301f0c7a46c6a7dfb07371a85160b10
23:29 ash_ so... package scope is orthogonal? (stealing a work from masak's blog) to lexical scope?
23:29 TimToady masak: you don't generally want your class variables to inherit anyway
23:30 masak ash_: hm. package scope and lexical scope aren't 100% orthogonal, I think.
23:30 masak ash_: they're still almost they same kind of thing.
23:30 masak my/our are much less different than, say, our/has.
23:32 ash_ well, a lexpad is the current block, so whatever is between { ... }, in a sense... and each lexpad has an OUTER so you could look at it like its a stack, where the lowest part of the stack is the outer most lexpad, so if lexical scope is a bunch of lexpads in a stack, package scope is...?
23:32 masak TimToady: so the '!' twigil means 'instance attribute', except when it's a class attribute?
23:32 ash_ (i might be looking at this from the wrong perspective)
23:33 masak ash_: no, it sounds good.
23:33 TimToady ! does not mean 'instance attribute'
23:33 TimToady ! means 'no public accessor'
23:33 masak ash_: package scope is what you get when you do `package A {}` or something synonymous.
23:33 TimToady 'has' means 'instance'
23:34 masak ash_: in general, 'our' vars end up in a MAIN (or something) package.
23:34 ash_ masak: i know what package scope is, but i am trying to figure out how i should implement it, in my language
23:34 ash_ has = instance, our = package, my = lexical, ?
23:35 masak as far as I grok it, yes.
23:35 masak ash_: I think for the purposes of an implementation, 'my' and 'our' scoping are indeed orthogonal.
23:36 masak but I could be wrong; I haven't tried implementing 'our' variables yet. :)
23:36 TimToady they main way they aren't orthogonal is that you get a lexical alias along with the our
23:36 TimToady *the
23:36 masak moritz_++ pointed out that even 'our' variables install themselves in the lex... what TimToady said.
23:37 ash_ i was thinking, i could put a longname identifier in the outer most lexpad that represents the "true" variable, and have a lexical reference to it
23:37 TimToady also, following 'PARENT::' from a package may get you to GLOBAL::, or it might get you to a lexical scope
23:37 TimToady since you can have lexically scoped packages
23:37 ash_ hmmm
23:37 masak TimToady: I think I'll retract my doubts about 'my $!class-var;' et al for now.
23:37 TimToady or even anonymous packages
23:38 TimToady std: my $x = package {...}
23:38 p6eval std 30454: OUTPUT«ok 00:01 110m␤»
23:38 ash_ hmm
23:38 ash_ then my strategy would not work out, methinks...
23:38 jnthn TimToady: Isn't that just a fancy way to get a hash? :-)
23:38 jnthn TimToady: Also, in this case what about code inside the package?
23:38 TimToady a hash of symbols
23:39 ash_ rakudo: my $x = package {...}
23:39 p6eval rakudo 7d43ee: OUTPUT«error:imcc:syntax error, unexpected ')' (')')␤     in file 'EVAL_1' line 71␤No applicable candidates found to dispatch to for '&infix:<=>'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
23:39 * masak submits rakudobug
23:39 jnthn my $x = package { our $y; };
23:39 masak ash_: I just did that locally! :)
23:39 ash_ lol
23:39 masak rakudo: package {}
23:39 jnthn TimToady: In the above, is $y a...
23:39 p6eval rakudo 7d43ee:  ( no output )
23:39 masak rakudo: package { ... }
23:39 jnthn well, what is it. :-)
23:39 p6eval rakudo 7d43ee:  ( no output )
23:40 masak rakudo: my $x = package Foo {}
23:40 p6eval rakudo 7d43ee: OUTPUT«Null PMC access in can()␤current instr.: '&infix:<=>' pc 17061 (src/builtins/Junction.pir:224)␤»
23:40 masak ooh, two in one!
23:40 jnthn Well, same underlying issue
23:40 masak how can you tell?
23:41 masak those are two quite different errors.
23:41 jnthn Because I know that Rakudo has no concept of non-our package
23:41 jnthn We sometimes look like we do
23:41 masak rakudo: our $x = package { ... }
23:41 p6eval rakudo 7d43ee: OUTPUT«error:imcc:syntax error, unexpected ')' (')')␤     in file 'EVAL_1' line 75␤No applicable candidates found to dispatch to for '&infix:<=>'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
23:41 jnthn No, that's different.
23:41 ash_ i think he means: our package { }
23:41 jnthn That's an anonymous package being put into an our variable.
23:42 masak rakudo: my $x = our package { ... }
23:42 p6eval rakudo 7d43ee: OUTPUT«error:imcc:syntax error, unexpected ')' (')')␤     in file 'EVAL_1' line 71␤No applicable candidates found to dispatch to for '&infix:<=>'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
23:42 masak rakudo: my $x = our package Foo { ... }
23:42 jnthn That should complain that an our-scoped package should have a name, I guess.
23:42 p6eval rakudo 7d43ee: OUTPUT«error:imcc:syntax error, unexpected ')' (')')␤     in file 'EVAL_1' line 71␤No applicable candidates found to dispatch to for '&infix:<=>'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
23:42 masak and that one?
23:42 jnthn To clarify what I wrote before
23:43 jnthn Rakudo has no concept of non-our package or any package not in sink context.
23:43 masak ah.
23:43 jnthn class and role do know what to do.
23:43 jnthn In such cirumstances.
23:43 TimToady std: our class FOO {}; GLOBAL::FOO::PARENT::FOO
23:43 p6eval std 30454: OUTPUT«ok 00:01 107m␤»
23:43 TimToady std: GLOBAL::FOO::PARENT::FOO
23:43 p6eval std 30454: OUTPUT«[31m===[0mSORRY![31m===[0m␤Undeclared name:␤ 'GLOBAL::FOO::PARENT::FOO' used at line 1␤Check failed␤FAILED 00:01 107m␤»
23:44 jnthn Ugh.
23:44 masak std: our class PARENT {}; GLOBAL::PARENT
23:44 p6eval std 30454: OUTPUT«ok 00:01 107m␤»
23:44 masak std: our class PARENT {}; GLOBAL::PARENT::PARENT::PARENT
23:44 p6eval std 30454: OUTPUT«ok 00:01 107m␤»
23:44 TimToady don't do that :)
23:44 masak :)
23:44 ash_ so, our means "make a lexical" which references a package with the name of the current package?
23:44 TimToady std: GLOBAL::PARENT
23:44 p6eval std 30454: OUTPUT«[31m===[0mSORRY![31m===[0m␤Undeclared name:␤ 'GLOBAL::PARENT' used at line 1␤Check failed␤FAILED 00:01 107m␤»
23:44 ash_ and our in the global scope makes variables for GLOBAL
23:45 TimToady ash_: except without the name
23:45 ash_ yeah, so "our $a" does a GLOBAL::<$a>
23:45 ash_ and a lexical $a (assuming your not in another package)
23:45 jnthn I'm still trying to work out how on earth to implement things like my $x = package { our $y }
23:45 TimToady yes, but the compiler, at the point it's processing 'our', doesn't care whether there's a name or not
23:45 jnthn TimToady: In
23:46 TimToady it just knows the $*CURPKG as a ref
23:46 jnthn my @x; for 1..5 { @x.push(package { our $x }) }
23:46 jnthn 1 package of 5?
23:46 ash_ ah, got ya, i am not keeping track of a $*CURPKG
23:46 jnthn *or
23:47 ash_ i'd guess 5 anonymous packages
23:47 ash_ (personally)
23:47 * masak too
23:47 * jnthn guesses 5 too
23:47 jnthn Just want to be sure that it is as hellish to implement as I expect. :-)
23:47 jnthn (I'm increasingly skeptical we'll manage it in R*, though if not I'll try and get us a good error message saying it's NYI.)
23:47 ash_ how would you access $x?  @x[0]::<$x> to access $x?
23:47 masak you mean you'd prefer to detect when two arbitrary packages were equivalent? :P
23:47 TimToady well, you make separate subs for 'sub {...}'
23:47 jnthn TimToady: Yeah, it's what I'd expect.
23:48 jnthn TimToady: Just means that it also takes me from a hacky way to implemnt it to no clue how to if it's 5 seperate ones. :-)
23:48 jnthn Almost certainly it's post-R*, anyways.
23:49 jnthn Stuff we don't support doesn't stop us being a subset. :-)
23:49 ash_ can you assign a package to a variables? like alias Foo::bar::long::name as blah or to $blah ?
23:51 TimToady The name of a package itself is the type object, which is undefined.  To get the actual package object, add '::' on the end
23:52 TimToady so Int is a type object, but Int:: is the package associated with Int
23:52 jnthn TimToady: Alternatively, use Foo.WHO ?
23:52 TimToady and it is a hash, as jnthn++ points out
23:52 * masak goes to bed
23:52 jnthn That is, Foo:: is a nicer way to write Foo.WHO ?
23:52 masak 'night, #perl6
23:52 jnthn o/ masak
23:52 TimToady so Int::<xxx> would look for Int::xxx
23:52 TimToady WHO is intended more for the exact pedigree of a module, really
23:53 ash_ rakudo: class Foo { ... }; my $x = Foo::; my $y = $x.new;
23:53 p6eval rakudo 395433: OUTPUT«Could not find sub &Foo␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
23:53 jnthn Dalmatian! Terrier!
23:53 ash_ std: class Foo { ... }; my $x = Foo::; my $y = $x.new;
23:53 p6eval std 30454: OUTPUT«ok 00:01 108m␤»
23:53 ash_ so, $y in that example would have a Foo.new?
23:54 TimToady more like Spot the 3rd, son of Spot and Missy
23:54 TimToady unless it was really Fido
23:55 TimToady ash_: no, that'd probably be a Stash.new
23:55 ash_ hmm
23:55 ash_ why a new stash?
23:55 TimToady because you said .new
23:56 TimToady and $x contains something whose .WHAT is Stash
23:56 * sorear -> backlog
23:56 * TimToady sighs, because he's still about 24 hours behind...
23:57 ash_ okay, so, if you did module Foo { sub bar { "Foo::bar" }; }; my $x = Foo::; say $x::<bar>; # prints "Foo::bar" ?
23:58 TimToady std: module Foo { sub bar { "Foo::bar" }; }; my $x = Foo::; say $x::<bar>;
23:58 p6eval std 30454: OUTPUT«ok 00:01 111m␤»
23:58 TimToady hmm, that should really fail to compile
23:59 TimToady I wonder how it parsed

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

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs