»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo:, alpha:, pugs:, std:, or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by lichtkind on 5 March 2010.
00:01 lichtkind left
lue o hi i'm back from p6l :) 00:02
00:03 nihiliad left 00:04 nihiliad joined 00:07 hercynium left 00:10 Kyril left
pugssvn r30439 | jnthn++ | [t/spec] Fudge some tests that intermitently seem to fail for Rakudo at the moment in S14-role/anonymous.t. 00:17
00:24 madalu joined 00:31 meppl left 00:35 Spreadsheet_ left
dalek kudo: 4a4fdca | jonathan++ | src/ (5 files):
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
kudo: b367489 | jonathan++ | t/spectest.data:
Turn on S14-roles/anonymous.t, a test we never have been able to attempt before.
pmichaud good evening, #perl6
jnthn oh gosh, if it's evening in your timezone, what is it here... :-) 00:37
pmichaud I'm guessing 01:37 :-)
jnthn 02:37 akshually :-)
pmichaud updates his internal timezone map.
00:38 nihiliad left
lue pmichaud: O HAI! 00:39
.oO(a bit too excited eh?)
pmichaud lue: NO, NOT TOO EXCITED AT ALL! GLAD TO SEE YOU!
:-)
sorear must...resist...replying...to...lue...on...p6l 00:41
pmichaud!
Hi!
lue interestingly enough, I just sent thoughts on Temporal to p6l
sorear oh I give up.
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?
pmichaud sorear: while I know a lot about them, I don't think I'm "in charge of" them.
sorear it feels like nobody is dealing with the issues 00:43
pmichaud I've been asking about them for... oh, 2+ years now
sorear which is a shame, it seems like a major liability for interop efforts
I thought I could at least get a tasklist from you
pmichaud I think that dealing with the issues requires a major rearchitecture of significant portions of Parrot
sorear do you think this is doable? 00:44
(ever, not for R*)
pmichaud ever, certainly.
I'm not sure how to accomplish it within Parrot's current deprecation constraints, though. 00:45
i.e., it really needs a significant revamp of several of Parrot's core PMC types
and the opcode set
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.
lue lemme guess, it gives you the line the .sub is on, right? 00:46
sorear lue: that would be great
lue s/is on/starts/
jnthn lue: Worse, it seems to give me a line in a completely *different* sub, which is...erm...epicly confusing.
As is this bug generally. 00:47
lue sorear: what would be great? Is it about my p6l message? (In which case I agree :) )
sorear lue: Parrot giving line numbers inside the sub
lue ah
sorear as for p6l, I think we should complicate Instants a bit 00:48
maybe not for core though
pmichaud were chromatic++'s line number fixes post-2.3.0?
lue jnthn: maybe some deep magic calls that other sub to breathe life into yours ?
jnthn pmichaud: Yeah, but I thought they were annotations ones rather than PIR ones.
pmichaud: I can hope though. :-)
I do optimism occasionally. 00:49
pmichaud hmm. somehow I was under the impression they were PIR ones.
jnthn Maybe so.
pmichaud I wouldn't expect c to be working on annotation ones.
jnthn Yeah, well, I worked on them once. They worked. Then they got broke. :-/
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
lue must..resist....boredom....gak! (afk) 00:51
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:52
bkeeler Ahoy there folks! 00:53
jnthn ahoj, bkeeler...ako sa mas? :-) 00:54
bkeeler Why yes, I'd love a beer, thanks
jnthn ...that was actually "how are you". ;-)
pmichaud reminds me of WYBMABIITY 00:55
(sign posted in a pizza parlor I once frequented)
jnthn misses pizza+beer 00:56
In Slovakia, they were pretty lax on who could serve alcohol, so a typical small pizza joint easily could.
bkeeler In all the best languages "how are you", and "can I buy you a pint" are the same
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
jnthn bkeeler: Well, "can I buy you a pint" works just great in English as a greeting too, in my book. :-)
Portland, as I remember it, has no problems with beer in general. :-)
bkeeler Indeed, good beer to be had here 00:58
You should consider it when you're done with Sweden ;)
pmichaud bkeeler: ready to work on interpolation? 01:01
bkeeler Yep, sure am
\o/
pmichaud okay, first comment is that your current patch is excellent; I just prefer things in a different location
bkeeler Heh, thanks
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
pmichaud we're going to abstract that out
bkeeler OK
01:03 yahooooo joined
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
01:03 lestrrat is now known as lest_away
pmichaud NQP already has a pasttype for this, it's PAST::Regex with :pasttype<pastnode> 01:04
01:04 wknight8111 left
bkeeler Right; my first take tried to use that 01:04
pmichaud currently that code handles two cases
er, three cases
it handles the cases of { ... }, <?{...}>, and <!{...}> 01:05
I want it to also handle the cases of <{...}> as well as variable interpolation
(which is really expression interpoluation) 01:06
*interpolation
currently, { ... } is a PAST::Node with no :subtype
<?{...}> is a PAST::Node with :subtype<zerowidth> 01:07
<!{...}> is a PAST::Node with :subtype<zerowidth> and :negate
bkeeler I note that there's also a separate 'zerowidth' flag that's not used
pmichaud oh, the code for this is src/PAST/Compiler-Regex, line 745
bkeeler Yep, I'm there
pmichaud checking.
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
pmichaud a few other constructs in nqp expect to see zerowidth as the :subtype, though 01:09
bkeeler Yep, they'd need switching
pmichaud and it would require switching through nqp, because zerowidth gets used in a lot of places
*throughout
anyway, I'm pretty comfortable with subtype as it is, I think.
bkeeler It seems somewhat orthogonal to the things that subtype is used for, is what I was thinking 01:10
Or, more to the point, subtype is used for lots of different unrelated things
pmichaud well, in many/most cases, zerowidth actually overrides the meaning of subtype, which is why I used it
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 cdarroch left
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)
bkeeler Yes, true
pmichaud Oh, I think the Regex.pir part is a fossil. I should review that and check.
01:12 madalu left
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:12
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
the existing definitions remain
I'd like to add a new :subtype of 'match'
or perhaps 'regex', or some other appropriate name. I'm not sure what it should be. 01:14
But :subtype<match> should...
1. Evaluate the PAST subtrue
*subtree
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
If the result isn't a Parrot sub, then stringify the result and treat it like a literal match
3. ...Profit
01:16 meppl joined
bkeeler That pretty much was my first take 01:17
And I'm trying to remember what the problems were...
pmichaud I think all of the remaining items fall out of that implementation
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
All hell breaks loose
Specifically all the boilerplate that goes at the start of every regex pir sub gets emitted again 01:21
pmichaud well, it should. 01:22
it's technically a separate match.
(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
Possibly I didn't try hard enough
pmichaud ah
you're talking about the case of something like <$a>, perhaps?
where $a needs to be treated like a regex?
bkeeler That's part of the puzzle, yes
pmichaud s/treated/compiled 01:25
that shouldn't happen directly in the :pasttype<pastnode> node.
bkeeler Which means I'd need to construct a PAST tree which does the compilation
pmichaud no.
what should happen with <$a> is that we generate PAST code that does the equivalent of make_regex($a)
that then returns a Sub that is the compilation of $a
which the :pasttype<pastnode> then executes as a submatch 01:26
which is what we wanted :-)
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:28
pmichaud one question I did have -- what does the spec expect with something like... my $a = [<a b c d>]; say 'a' ~~ /$a/; # ??? 01:29
bkeeler It's not clear. My patch currently would interpolate that as a|b|c|d 01:30
pmichaud right.
bkeeler It treats any Iterable that it gets back from the interpolated bit as an alternation 01:31
which seems reasonable to me
pmichaud so, in that case we want the :subtype<match> case to also handle alternations
bkeeler Yep. Further trickyness
pmichaud but I'm thinking it should be very similar code to what you already did in the patch, yes? 01:32
bkeeler Possibly
But each of the elements of the Iterable has to be compiled
pmichaud I'd expect make_regex() to do that.
01:33 alester joined
bkeeler Where is make_regex? 01:33
pmichaud it'd be supplied by the HLL
pugssvn r30440 | jnthn++ | Tweak so that S02-magicals/pid.t can work on Win32 also.
pmichaud in other words, when we have something like <$a>
we end up emitting PAST that looks like 01:34
bkeeler As a method of the subclassed Cursor?
pmichaud it could be a method; I was thinking it'd be fine as a standalone private sub
note that the PAST::Regex itself never calls make_regex directly, the HLL sets that up in the PAST tree
(typing)
lisppaste3 pmichaud pasted "example PAST for <$a> for bkeeler++" at paste.lisp.org/display/98115 01:36
pmichaud the !make_regex sub is something that simply takes its argument and coerces it into an appropriate regex sub 01:37
that the outer regex can invoke on the current match 01:38
(note that this happens at runtime, not at the point where <$a> itself is being compiled)
if $a is an array, then it builds an alternation
bkeeler I see 01:39
pmichaud if $a is a string, it compiles the string
if $a is already a regex, it returns it directly
we can then easily call back into the current regex compiler from !make_regex
in the case of something like 01:40
/ $a /
it's the same code, except we have a "!make_string" private sub that tends to want to return strings instead of regexes
and the HLL knows the difference based on what it's parsing
(so it can choose the correct PAST structure) 01:41
bkeeler Fair enough 01:42
My deja-vu sense is still telling me there's problems, but unfortunately it's not elaborating
Hate it when it does that
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
bkeeler I guess the thing to do is to try and see
pmichaud it might be easiest to try to get <{ $a }> to work in NQP. 01:43
that way you're just dealing with nqp, instead of rakudo+nqp
NQP even knows how to parse <{ $a }> already, it just doesn't set the :subtype 01:44
bkeeler Worthwhile having it there
pmichaud right.
bkeeler Seems like it might be handy for compiler-writers to have
pmichaud it can be, although NQP doesn't have the luxury of being able to provide a !make_regex function at runtime.
althoguh maybe we can make that a standard part of the P6Regex library.
that sounds useful-ish. 01:45
bkeeler I don't see why not
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
we just need to have
method assertion:sym<{ }>($/) { make $<codeblock>.ast; }
also set the :subtype<match> flag on the codeblock ast 01:47
which will tell it to act like a matching code assertion instead of an execute-only code assertion.
(looking at regex compiler invocation)
jnthn rakudo: say Any.^methods 01:50
p6eval rakudo b36748: ( no output )
jnthn Finally fixed. :-)
jnthn waits for the spectest run before pushing
bkeeler Also, if "method assertion:sym<{ }>($/)" is responsible for setting subtype<match> it will overwrite subtype<zerowidth> 01:51
pmichaud backwards. 01:52
subtype<zerowidth> ends up overwriting subtype<match>
(which is what we want)
bkeeler Hmm, I distinctly remember breaking <?{...}> when I tried 01:53
pmichaud The <? ends up getting parsed as ? + assertion
so, we parse the {...} part as a normal assertion, giving us back PAST::Regex with :subtype<match>
the ? then takes that AST as-is, but sets :subtype<zerowidth>
i.e., it acts like a prefix operator 01:54
we evaluate the operand before we set the :subtype
the code that handles this is src/Regex/P6Regex/Actions.pm line 342 01:55
on line 344, we check to see if the <?...> has an argument (<assertion>)
in this case, <?{...}>, the {...} is a sub-assertion produced from assertion:sym<{ }> 01:56
so, we get its AST (line 345)
change its subtype to 'zerowidth' (line 346)
and use the resulting AST as the result of <?{...}> (line 349)
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...
pmichaud so that things like <!???!{ $foo }> can work
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
01:58 Psyche^ joined
pmichaud yes 01:58
and we can do baby-steps in NQP
once the PAST::Regex structure is working, it's simply a matter of constructing subs to do the runtime handling of the dynamic values
I think I need to add a 'rule' adverb to .compile 01:59
so that we can compile starting somewhere other than TOP
bkeeler That would be swell
dalek kudo: 6ee83f2 | jonathan++ | src/metamodel/ClassHOW.pir:
Fixes to method introspection so we can pass all of the tests on it again.
kudo: 559b0ca | jonathan++ | src/builtins/Code.pir:
Tweak Code.name so it doesn't explode on PIR subs.
kudo: 5cf2126 | jonathan++ | t/spectest.data:
Turn on S12-introspection/methods.t.
kudo: 5707e67 | jonathan++ | t/spectest.data:
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).
pmichaud Cursor.parse already knows how to do that
bkeeler Problem is all those contextuals that get set up in TOP and comp_unit 02:00
pmichaud right
this will avoid those.
bkeeler They need to be there
pmichaud oh, yes.
hrm.
bkeeler I made the appropriate change to .compile at one point and had it calling a different rule 02:01
Even if I duplicated all the contextuals in my new rule, it still didn't work right
pmichaud yes, it will be hard to get those right
02:01 felipe joined 02:02 Psyche^ is now known as Patterner
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
i.e., we don't have to have the regex compiler generate the code to call itself.
bkeeler true
jnthn OK, I'm done for tonight. 02:03
4am. Oops!
bkeeler \o jnthn
pmichaud jnthn: turning in early, I guess? ;-)
jnthn pmichaud: :-P 02:04
pmichaud jnthn: it's okay, we'll let you finish early tonight.
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?
pmichaud my intent is that R* will be a distribution release, not just a compiler release
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. ;-)
sorear: See also wiki.github.com/rakudo/rakudo/whats...nto-rakudo
pmichaud the Rakudo releases we do now are just compiler releases
R* will be a compiler release plus modules 02:05
(whichever modules we think might belong in a distribution)
jnthn phenny: tell colomon Not sure that we'll make 31000 for the release tomorrow^Wtoday, but I got us 60 closer tonight anyways. :-)
phenny jnthn: I'll pass that on when colomon is around.
jnthn OK, I'm gone o/
pmichaud but the rakudo compiler repository will probably never be the place that we hold non-core module
*modules
sorear what's sink context?
02:05 agentzh joined
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
sink context eagerly evaluates its operand(s)
dalek kudo: 98f05df | jonathan++ | docs/ChangeLog:
Some more ChangeLog entries.
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
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
the focus of a compiler release is to be as true to the latest language specification as possible
the point of distribution releases is to provide continuity across releases
so a distribution release is more interested in backwards compatibility, library selection, and module compatibility than a compiler release 02:10
and different distributions could choose varying criteria for when to issue updates 02:11
some distributions may choose to emphasize stability and backports
other distributions may want to emphasize leading-edge modules and features
some distributions may be oriented towards web programming, or database programming, or whatever
bkeeler: sounds like a great plan. ping me when you run into difficulties. 02:12
bkeeler Willdo
OK, time to cook up some noms and watch the Daily Show. Back later probably... 02:13
02:17 lest_away is now known as lestrrat
pmichaud hugme: add bkeeler to nqp-rx 02:18
hugme hugs bkeeler. Welcome to nqp-rx!
pmichaud hugme++
pugssvn r30441 | pmichaud++ | [pm.txt]: Added a new question for TimToady++: 02:25
r30441 |
r30441 | +Pm-20: What's the result of something like...?
r30441 | + my $x = [<a b c d>]; 'a b c d' ~~ / $x /;
pmichaud afk for a while.
02:43 cotto joined 02:44 rml_ joined 02:50 JimmyZ joined
sorear pm.txt eh? 02:51
colomon phenny: tell jnthn That's getting pretty close... :) 02:55
phenny colomon: I'll pass that on when jnthn is around.
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. :-) 02:56
03:09 user253784 joined 03:40 meppel joined 03:44 JimmyZ left, meppl left, snarkyboojum joined 03:47 rml_ left 03:55 molaf joined, drbean joined, meppel is now known as meppl
lue echo "hello?" 04:06
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␤»
lue ooh! what's that supposed to do? 04:10
diakopter I don't know. 04:12
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:14
it's confusing because [ ] is used for both <bleh>
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 REPLeffect left
diakopter std: (my Int) $foo = 1; 04:21
p6eval std 30441: OUTPUT«===SORRY!===␤Malformed my at /tmp/DOr0PRCfUJ line 1:␤------> (my Int⏏) $foo = 1;␤ expecting any of:␤ multi_declarator␤ scoped declarator␤ typename␤Parse failed␤FAILED 00:01 107m␤»
diakopter rakudo: (my Int) $foo = 1;
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 04:34 REPLeffect joined 04:41 REPLeffect left 04:50 molaf left
diakopter afk 04:52
04:56 user253784 left 05:00 ReiniUrban joined 05:01 rurban left, ReiniUrban is now known as rurban 05:07 hercynium joined 05:16 kaare joined 05:17 kaare is now known as Guest59422
cognominal rakudo: say 'a, a ' ~~ / :s a ** ',' / 05:21
p6eval rakudo 98f05d: OUTPUT«a␤»
cognominal rakudo: say 'a,a ' ~~ / :s a ** ',' / 05:22
p6eval rakudo 98f05d: OUTPUT«a,a ␤»
lue goodnight moon 06:02
06:06 uniejo joined 06:12 ruoso joined 06:23 uniejo left 06:25 uniejo joined 06:26 alester left 06:34 XaeroOne joined 06:45 nihiliad left 06:53 justatheory left 06:54 mberends joined, riffraff joined, justatheory joined, justatheory left 07:08 derpalerts joined, derpalerts left, steinberg joined, cotto left, arnsholt left, Tene left, avar left, literal left, zamolxes left 07:13 cotto joined, arnsholt joined, renormalist joined, mj41 joined, gabiruh joined, fda314925 joined, oskie joined, Tene joined, avar joined, literal joined, zamolxes joined, TimToady joined, pmichaud joined, card.freenode.net sets mode: +oo TimToady pmichaud
szabgab moritz_, ping 07:19
07:25 dual joined
moritz_ szabgab: pong 07:27
szabgab gm
moritz_ (no, I won't make it to Berlin :/ )
07:27 gurjeet left
szabgab :-( 07:27
is there anyone else working on Rakudo/Perl 6 who might come by ? 07:28
07:28 gurjeet joined
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 07:47 XaeroOne left, XaeroOne joined 07:59 XaeroOne left
dalek kudo: af152d7 | (Martin Berends)++ | src/core/Temporal.pm:
[core/Temporal.pm] give strftime() the previously forgotten %b and %B formats
08:05
08:07 XaeroOne joined, fridim joined
pugssvn r30442 | mberends++ | [DateTime.t] also test %b and %B in strftime() 08:08
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
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.
sorear by loadable module, do you mean something magic, or just an ordinary S11 .pm? 08:10
mberends the latter
08:12 moritz_ sets mode: +o mberends
moritz_ mberends: might I ask you to wait with that until after today's release? 08:13
moritz_ would be happy if somebody could proof-read the release announcement 08:17
mberends moritz_: yes, good idea. I had read the changelog, will proof-read now :-) 08:18
08:21 iblechbot left
mberends moritz_: the announcement looks nit-free to me 08:23
dalek kudo: 05ee824 | moritz++ | docs/release_guide.pod:
[docs] update release guide
08:24
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
:)
sorear mberends: What will the new API for strftime look like?
08:27 sundar joined
colomon rakudo: my %a; say %a.WHAT 08:28
p6eval rakudo af152d: OUTPUT«Hash()␤»
mberends sorear: hopefully "use DateTime::strftime" and then proceed as before 08:29
08:29 dakkar joined
sorear use Module::method? 08:29
never seen that syntax before 08:30
moritz_ that would be another module
mberends sorear: there will be a DateTime.strftime.pm, precompiled to .pir
sorear ah.
sorear wonders why Perl 6 grammars don't mingle action code with production rules 08:31
colomon rakudo: my %a; say %a.kv
p6eval rakudo af152d: OUTPUT«␤»
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:32
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
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:38
and show very interesting features of Perl 6 08:39
moritz_ szabgab++
szabgab wait with that
sorear szabgab++
szabgab I need your help to prepare it :-)
sorear let us know if real people are as universally hostile towards P6 as bloggers are
moritz_ ok, ++szabgab then :-)
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
I'd like to have some more focused thing
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
I'll look at that
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
moritz_ github.com/moritz/json/blob/master/...Grammar.pm
szabgab but make it very interesting
junctions and chained comparision are nice (though the latter exists in Python)
moritz_ a complete JSON grammar
szabgab so we have to be careful not to oversell the idea 08:43
a simple grammar might be interesting
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
szabgab some of the meta operators maybe 08:44
dalek kudo: d50e92f | moritz++ | docs/announce/2010.04:
[announce] mention number of passing tests, and a nit pick from snarkyboojum++
08:47
pugssvn r30445 | colomon++ | [t/spec] Fudge out test with weird indeterminate results. 08:49
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
btw I've estimated the number of total test for the announcment, not took the count from test_summary.pl 08:51
that's inaccurate anyway, so quoting all 5 figures felt too stupid to me
that's why I also gave the ratio of passing tests as two decimals only
colomon :) 08:52
moritz_ as a physicists I feel that the number of significant decimals should roughly present the accuracy of the number
colomon: if you have some free time, you could also look at rt.perl.org/rt3/Ticket/Display.html?id=74526 and maybe apply it 08:53
would certainly be nice to have it in the release, if it's a good patch
08:59 sundar left
colomon trying it now. 08:59
09:02 IllvilJa left 09:05 masak joined
masak halloj #perl6 09:06
colomon o/
moritz_ \o
mberends o/
masak pmichaud++ # readline example paste.lisp.org/display/98110
moritz_ seems to walk in opposite direction of colomon and mberends
09:06 riffraff left 09:07 pmurias joined
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
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
80 bits of data, 48 bits of mandatory alignment padding :/
moritz_ sounds like that decreases performance by clogging the caches 09:09
so it doesn't run at "full speed" :-)
09:09 gurjeet left 09:10 gurjeet joined 09:13 lestrrat is now known as lest_away 09:22 scottamatot left 09:27 Patterner left
sorear rakudo: say now.WHAT 09:31
p6eval rakudo d50e92: OUTPUT«Could not find sub &now␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
moritz_ rakudo: say time.WHAT
p6eval rakudo d50e92: OUTPUT«Num()␤»
sorear S02 defines 'now' as a grammatical builtin
not a function
which seems weird 09:32
09:32 sundar joined
sorear rakudo: say time.perl 09:32
p6eval rakudo d50e92: OUTPUT«1271927778.04165␤»
moritz_ but it's clear that rakudo will parse it a sub call if it doesn't know about it
09:33 Psyche^ joined, Psyche^ is now known as Patterner 09:34 Patterner left
sorear hmm, S02 still talks about list context 09:35
09:35 Psyche^ joined, Psyche^ is now known as Patterner
moritz_ why shouldn't it? 09:35
colomon moritz_: pushed with 30931 passing tests, including that patch. 09:37
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)␤»
moritz_ rakudo: print 30931 / 39e3
p6eval rakudo d50e92: OUTPUT«0.793102564102564»
colomon not quite 80%, alas. 09:39
moritz_ std: 30931/39e3
p6eval std 30445: OUTPUT«ok 00:01 109m␤»
colomon afk # back to bed
moritz_ calls rakudobug
sorear moritz_: because, insofar as I understand it, list context doesn't exist anymore
colomon probably leftover remnants of Rat literals...
moritz_ colomon: what did you push? rakudo? or spectests? 09:40
pugssvn r30446 | moritz++ | [t/spec] re-fudge reduce.t for rakudo
moritz_ also forgot to svn dcommit something yesterday night
09:42 Patterner left, Psyche^ joined, Psyche^ is now known as Patterner
pugssvn r30447 | pmurias++ | [mildew] fix bug 09:52
sorear do we have any code examples using macros? 09:54
moritz_ there are some very basic tests 09:55
but since nobody really implements macros yet, not much
09:59 iblechbot joined 10:01 sundar left
dalek kudo: 5c8257f | moritz++ | (2 files):
enable three more test files that colomon++ fudged
10:02
moritz_ moritz.faui2k3.org/tmp/rakudo-2010.04.tar.gz <- preview of upcoming release, please test!
masak sorear: have a look at the link at the bottom of feather.perl6.nl/~masak/
10:02 sundar joined
masak sorear: it's a presentation containing a few 'best guesses' of how macros will looks. they're by the end. 10:03
10:03 Alias_ joined 10:04 eiro left, yahooooo left, opx^away left, Woody2143 left, japhb left, kst joined 10:05 Grrrr joined 10:06 yahooooo joined, daemon joined, frettled joined, mantovani joined, mdxi joined, gfldex joined, opx^away joined, Woody2143 joined, japhb joined, frettled left 10:07 frettled joined 10:08 yinyin left 10:12 eiro joined 10:19 ruoso left
colomon blast, that's what I get for going to sleep 10:26
or rather, trying to hack when asleep
moritz_: sorry, my push didn't work. you duplicated my test patch, and I've just pushed quester's patch. 10:27
10:30 lest_away is now known as lestrrat
dalek kudo: d952fc4 | quester++ | src/core/ (2 files):
Fix Seq.perl to not say Seq.new(). Interim fix for Iterator.perl infinite loops.
10:30
10:30 sundar left 10:33 rv2733 joined 10:43 Xaero joined 10:44 XaeroOne left 10:46 gurjeet left, gurjeet joined 10:48 slavik left 10:49 clintongormley joined 11:01 slavik joined
moritz_ ok, I'll re-run the tests with the latest patch 11:22
please don't commit anything to rakudo until I've tagged the release
mberends moritz_++ 11:26
colomon moritz_++ indeed. 11:29
masak \o/ moritz_++ 11:30
11:34 meppl left
jnthn o/ 11:54
phenny jnthn: 02:55Z <colomon> tell jnthn That's getting pretty close... :)
jnthn Ooh, we're releasing?! :-D
moritz_++ :-) 11:57
11:57 meppl joined
moritz_ release tagged, tarball uploaded 11:58
feel free to tore things apart again :-)
masak \o/ 12:00
jnthn moritz_++ \o/ 12:01
dalek kudo: 43f1105 | pmichaud++ | docs/spectest-progress.csv:
spectest-progress.csv update: 402 files, 30887 (79.9% of 38645) pass, 0 fail

S06-signature/named-parameters.rakudo passed 82 unplanned test(s) S32-list/reduce.rakudo passed 4 unplanned test(s)
12:02
pmichaud good morning, #perl6 12:03
moritz_ rakudo.org/node/69 # announcment
moritz_ hopes its visible for users that are not logged in 12:04
12:04 envi^home joined
pmichaud checks 12:04
looks visible to me. I'm not logged in.
moritz_ great
pmichaud moritz_++ moritz_++ 12:05
Expressions that begin with a variable and end with a circumfix now properly 12:07
interpolate into double-quoted strings, like [email@hidden.address] or
"%hash".
Looks like the <key> got swallowed.
masak needs a layer of HTML escaping.
12:08 charsbar joined
moritz_ updated. 12:08
12:09 mariano__ joined
jnthn *postcircumfix 12:09
moritz_ fixed on rakudo.org -- too late for the mailing lists 12:10
jnthn It's not a big thing. :-) 12:14
pmichaud it's fine on the mailing list
masak likes www.modernperlbooks.com/mt/2010/04/...ility.html
chromatic++
moritz_ was about to write something similar 12:16
but it wouldn't have been comparable in eloquency
pmichaud I wonder about a companion post: "The thing about anonymous trolls..." 12:17
12:18 araujo joined
pmichaud I like chromatic's post, but it misses something for me (more) 12:18
I read the PerlMonks thread. Like him, I was a bit disturbed by AnonymousMonk and others' postings. (more) 12:19
I thought about speaking up, but then decided it wasn't worth my time.
12:20 pmurias left
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.)
moritz_ and that's very hard to measure 12:21
12:21 araujo left
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
12:21 quester_ joined 12:22 araujo joined, pmurias joined
moritz_ the thing with anonymous trolls is that they can say it's very easy to gain high quality contributors (<www.perlmonks.org/?node_id=835737>) and we can't really nail them down for not doing it for us 12:22
pmichaud oh, in that case it's really a case of someone totally not knowing what he/she is talking about 12:23
the logic behind that post goes something like
1. If we had people skilled for this task, Perl 6 would be done by now 12:24
2. Perl 6 isn't done by now
therefore, it's obvious we don't have people skilled for the task
12:24 araujo left
pmichaud .... and the poster doesn't bother to look to see that the facts don't fit that particular logic. 12:25
(or that the hypothesis in #1 is itself not self-evident nor true)
12:25 araujo joined
pmichaud indeed, the fallacies in that post are pretty glaring 12:26
moritz_ sure
pmichaud in particular, Perl did *not* grow out of a university setting.
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.
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...
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."
quester_ moritz_: Yeah, these things happen 12:29
12:29 araujo left 12:30 IllvilJa joined 12:31 pmurias left 12:32 araujo joined 12:34 SmokeMachine joined
quester_ Good night, everyone. Happy release celebration! Viva Moscow/Москва! 12:35
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
colomon: otoh I've seen a positive trend too 12:37
colomon: this thread contains very unusual amounts of trolling, even for Perl 6 readiness discussion
masak I've definitely felt a positive trend lately. 12:38
12:38 smash_ joined
smash_ hello everyone 12:38
moritz_++ # release
masak \o
12:39 quester_ left 12:41 ruoso joined
moritz_ "This is a duplicate of #8045, which has been open since 2001. 12:41
sorry, wrong paste
"Moscow.pm also reminds that today (22 Apr) is the birthday of Lenin :-)
"
via email from Andrew Shitov :-) 12:42
rakudo: say Date.today() - Date.new('2006-03-24') 12:44
p6eval rakudo 43f110: OUTPUT«1490␤»
jnthn moritz_: lol 12:45
moritz_ on 2006-03-24 was the first commit to languages/perl6 in parrot
pmichaud I'm wondering if I should write my own reply to the thread, or "don't bother". 12:50
I have a lot of facts I'd like to see interjected.
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.
jnthn rakudo: say Date.today() - Date.new('2007-12-16')
pmichaud moritz_: yes, I meant as a separate blog post.
p6eval rakudo 43f110: OUTPUT«858␤»
jnthn That's how many days since my first commit to Rakudo.
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
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
Unfortunately, Larry Wall wouldn't qualify according to this criteria.
So obviously we need to get rid of him if we want to finish Perl 6. :-)
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.
jnthn jnthn specialized in the field during his third year.
At some small insignificant university in Cambridge, England.
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)
masak hopes to graduate Real Soon Now
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
I guess the list I gave above are all "average open source rookies".
12:57 Guest59422 left
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:57
moritz_ maybe just link to the "YOU'RE NOT GOOD ENOUGH" shouting by mst :-) 12:58
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
12:59 fridim left 13:00 kaare joined, ReiniUrban joined, kaare is now known as Guest81115 13:01 molaf joined, rurban left, alester left, ReiniUrban is now known as rurban
masak is an average open source rookie 13:02
moritz_ on a totally unrelated note, funcall.blogspot.com/2010/04/whenev...-java.html captures pretty well some of my Java experience
Java forces you to write things that are infered by the compiler anyway 13:03
13:03 pmurias joined
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/
Java-bashing! 13:05
Also
I'm doing Perl training at work again
colomon jnthn: I don't think they had most of those classes when I got my CS degree.
There was a theory of programming languages course I took, in which I knew more than the teacher about C++. :)
jnthn colomon: Yeah, apparently they're not all typically of offer. 13:06
Heh, anyone who knows about formal semantics probably doesn't want to think about C++. ;-)
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.
mathw Yeah C++ and formal semantics are not good friends
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." :-)
colomon Most of my advanced CS courses ended up being AI courses.
moritz_ lols, literally 13:08
smash_ i had 'formal methods' in my 2nd year
colomon Though I also had a nice course on IBM mainframe assembly language.
mathw I rather like C++, but I think it's more accidentally useful than brilliant 13:09
But it's still better than Java :)
13:09 iblechbot left
colomon :) 13:10
mathw sometimes I do get frustrated with some of the limitations on templates though
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.
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 =)
mathw meh 13:13
it's overrated
and you can always add it to C++ if you want it
arnsholt I have to admit that I'm a lazy bugger. I really like garbage collection 13:14
moritz_ too
mathw Sometimes I use a language with it in and get kind of giddy
Look! I think, I can just throw this away and someone will pick it up 13:15
But then I run headlong into a brick wall
moritz_ also it's not so easy to add proper GC retrospectively
mathw because I'm writing in Java
13:15 Guest81115 left, ruoso left
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
mathw true :) 13:16
colomon :)
moritz_ points at the channel name
PerlJam mathw: "I guess I've been stabbing myself with a knife for so long, it doesn't bother me anymore" :)
moritz_ well, once the nerves are all dead, you don't feel it anymore
colomon Really, if you're using a decent set of foundation classes, calling delete (directly) is pretty darned rare. 13:17
And Perl 6 requires more calls to new than C++ does. ;) 13:18
mathw I just... do it
It doesn't seem to matter
moritz_ actually I find that I call .new in test code many times more than in regular code
mathw When I compare languages, GCness just doesn't factor into it 13:19
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
in real code, you tend to make a few objects and then squeeze them in various ways for some time
PerlJam mathw: statistics aren't on your side. Most bugs, particularly the hard-to-track-down variety, come from improper memory management.
mathw Not here 13:20
here they come from improper multithreaded resource handling 13:21
colomon PerlJam: I think there's a selection bias going on there.
mathw sometimes that does involve one thread deleting something while another thread is still trying to use it, admittedly
they're always fun...
PerlJam mathw: well ... threads are just evil ;)
mathw well actually they're usually quite easy to track down
it's just hard to figure out how to fix them
yeah threads are evil
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 :-)
smash_ if you need sleep's to avoid race conditions you're probably doing something wrong (or something nasty)
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
mathw I was working with a colleague earlier on a design
We managed to design ourselves into and then out of a race condition
We felt quite good about that
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)
colomon for (unsigned int i = 0; i < p_trimloops.size (); i++)
I can say
mathw It would have been embarrassing not to spot it
colomon for $.trimloops -> $loop
mathw colomon: oh yes I love that
smash_ moritz_: :)
mathw and I love it because I can say @things>>.frobnicate;
colomon nod
mathw and because I can say given $thing { when $condition {} when Trout {} when EndOfTheUniverse {} } 13:25
and just because it's so awesome
colomon I found myself saying ~~ $x .. $y several times in my recent code, which Very Nice 13:26
oh! 13:27
just occurred to me that i've seen people implement +- as a Perl 6 operator which did a junction.
tpf|[particle] if you put a scalar on the right side of a ->, it gets invoked automatically?
13:28 tpf|[particle] is now known as [particle]
colomon but for my work, it would be better if it made a range. 13:28
[particle] takes off his gsoc org admin hat
moritz_ colomon: that's more useful most of the time
[particle]: no
[particle]: it treats it as a one-element list
so colomon's example should probably be for @.trimloops -> $l { ... } 13:29
colomon indeed.
[particle] ok, that's what i was getting at, thanks.
colomon just a think-o. 13:30
[particle] glad it wasn't mine, this time ;)
colomon and that in itself is another cool Perl thing ... the sigil documents what type of variable it is. :) 13:31
(assuming you get it right!)
moritz_ :-)
colomon++
colomon but yeah, my $work is filled with things like 13:32
fabs(x - 1.0) < tolerance
replacing that with ~~ $x +- $tolerance would be a big win in clarity. 13:33
[particle] |$x - 1.0| +-- $tolerance # dare to dream...
you'd probably want unicode characters there for | and +-, but i'm too lazy to look them up 13:34
13:35 ruoso joined
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 :)
moritz_ there's a prefix:<|> operator already 13:36
that clashes with circumfix:<| |>
[particle] circumfix:<| |> would be tough, i fear, due to ... moritz_++
mathw the poor parser might find that quite painfulk 13:37
13:37 gurjeet left
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
masak hah! 'has' scoped only applies to methods. :) 13:40
jnthn moritz_: ah, yes 13:43
:-/
masak: ...and attributes and submethods... :-)
...and regexes....
:-)
moritz_ and tokens, rules 13:44
masak not attributes, if you only mean the private storage location.
moritz_ (ok, that's cheating)
[particle] so, unicode to the rescue
masak and all the others are a kind of method, really.
jnthn masak: How so?
I read has-scoped as "available through an instance"
masak hm, ok.
jnthn That fits attributes and methods quite well
masak I was more thinking about it as 'doing lookup along the axis of inheritance'. 13:45
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.
PerlJam Hmm 13:46
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.
moritz_ PerlJam: that's not true
afaict
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 :)
moritz_ it was in perl 5
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
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.
moritz_ just like my, exactly 13:50
masak right.
moritz_ but visible from everywhere via the full name
masak the main difference is where they install the variable.
moritz_ (unless you're in an anonymous package...)
masak my:lexpad::our:package
PerlJam perhaps it's just a vocabulary thing.
moritz_ masak: our: package+lexpad
masak moritz_: oh, indeed.
moritz_ dynamic variables look into caller's scopes
masak PerlJam: how couldn't it be a vocabulary thing? :) 13:51
std: class A { has $foo } 13:52
p6eval std 30447: OUTPUT«ok 00:01 109m␤»
masak std: class A { has $*foo }
p6eval std 30447: OUTPUT«ok 00:01 107m␤»
masak std: class A { has $^foo }
p6eval std 30447: OUTPUT«ok 00:01 107m␤»
masak I don't know what those last two mean :)
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 $.... ;)
masak seems to me 'has' more or less requires a '!' or a '.' twigil, if you're to use it for something useful.
moritz_ PerlJam: it's an overloaded term... I was refering to contextual variables, actually
PerlJam okay, then the universe is sensical :)
masak PerlJam: simply a variable that does lookup back along the call stack, as opposed to back along nested lexical scopes.
moritz_ but "dynamic" always means "follows the execution path" in Perl 6
masak PerlJam: what do you mean by 'dynamic variable'? 13:54
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
PerlJam our just installs a lexical alias for the shortname of the "package var"
moritz_ they do live in the PROCESS:: namespace, iirc
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
PerlJam honestly, I've only rarely even thought of temp() in Perl 6. :) 13:58
masak S02 introduces $*foo as 'dynamically overridable global variable'. 14:00
14:04 takadonet left
PerlJam Hmm. Scope declarators have always implied a particular storage location to me. 14:06
different declarator, different storage location
moritz_ tests rakudo with latest parrot and immutable_strings merged 14:07
colomon moritz_++
14:10 nsh joined
moritz_ doesn't work 14:10
Null PMC access in invoke()
jnthn schiese. :-( 14:11
moritz_: Where, and is there a backtrace?
moritz_ while compiling src/Perl6/Grammar.pm
jnthn: yes, just a sec
jnthn oh damm, that's early.
moritz_ nopaste.snit.ch/20337 14:12
masak moritz_: looks like the one I had the other day.
jnthn :| 14:13
It's a crash in NQP then.
my @words := HLL::Grammar::split_words($/, $past); 14:22
In src/HLL/Actions.pm
14:23 sundar joined
jnthn That may be the issue. methods used to accidentally the namespace due to a Parrot issue that got resolved. 14:23
I'm doing other bits ATM but maybe try it with HLL::Grammar.split_words($past); 14:24
14:25 alester joined
moritz_ uhm, the files are full of ::method calls, if my ack-fu hasn't left me 14:28
14:28 takadonet joined
moritz_ not so bad as first though 14:28
some of them are actually subs, most are pir:: 14:30
cognominal hum, what is the standard way to convert a string to lower case in Perl 6? 14:33
moritz_ lc
14:34 charsbar left
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
14:34 charsbar joined
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.
er, me
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 agentzh left
moritz_ and that gets us much further in the compilation stage 14:35
masak I thought the same thing.
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;?
masak you don't need ! for write access.
moritz_ you need, if it's not marked as 'is rw'
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?
masak it leads to the kind of confusion that sundar expresses above.
moritz_ sundar: from within the class, yes
masak sundar: inside the class, you can do $!c = 3. outside, you can't.
sundar: if you want a writable public attribute, you should say 'is rw' at its declaration. 14:37
sundar: and then $x.c = 3; when you want to modify it.
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?
moritz_ sundar: correct 14:39
because $x.c is actually a method call
and not the attribute
arnsholt takes a look at the NQP book
14:40 iblechbot joined
PerlJam arnsholt: what NQP book? ;) 14:40
moritz_ So if you want to change the attribute, you
need to use the C<!> sigil (unless the accessor is marked C<is rw>).
is that clearer?
arnsholt PerlJam: Indeed. Hopefully I can add a bit of stuff at least 14:41
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'...
masak sundar: you can't use $x!c inside the class either to mean that.
sundar: you'd just use $!c to mean the private attribute $!c on self.
$!c would mean a call to a private method c in the class. 14:43
arnsholt PerlJam: No, he didn't =)
masak er, $x!c would mean that.
14:44 ruoso left, broquaint left
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.
moritz_ sundar: anything with a . is a call to a public method
14:45 broquaint joined
moritz_ both $.method and $obj.method 14:46
masak except at that one point when it's declared :)
arnsholt There's only pmichaud working on the book so far, right?
moritz_ right ... :&
arnsholt: last I looked there wasn't much in the book
PerlJam sundar: anything with a . is a method call
arnsholt moritz_: Yeah, there's just the preface
moritz_ $!thing is an attribute
PerlJam is slow
moritz_ $thing!other is a call to a private method
arnsholt So, I figured I might be able to add some stuff as I hack on my Prolog project
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 :)
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?
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
moritz_ sundar: if you're talking about write access, yes
PerlJam s/though/thought/
arnsholt But seeing how I'm hacking using NQP, I might be able to add some more stuff
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.
arnsholt NQP deserves more documentation
moritz_ sundar: please update the article you were reading... is it clearer now? 14:49
14:50 uniejo left
sundar moritz_: yes, that's much clearer. did you add the set_stuff method too now? 14:52
moritz_ sundar: yes, I did
sundar++ # feedback
masak moritz_++ # reacting constructively to 'this needs to be improved'-type comments
moritz_ hates it when line numbers in error messages point to empty lines 14:53
masak in 22nd century computer science, we will probably discover that those lines aren't all empty space as we previously thought. 14:54
TimToady
.oO(Acme::Bleach)
14:57
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:58
masak frettled: sounds interesting. :) 14:59
was it stupid-silly or stupid-stupid?
frettled stupid-stupid
masak ok :)
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:00
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 :)
frettled win-win 15:02
15:06 ruoso joined 15:07 ash_ joined
masak that's an interesting use of the word 'backported' in the release announcement. :) 15:10
'Most of the DateTime built-in type has been backported from the "alpha" branch'
but the master branch is newer than the alpha branch...? :)
jnthn forwardported? :-) 15:11
moritz_ we lost the functions by the merge, and ported them back
masak ported into the FUTURE!
moritz_ back to where we need them :-)
ash_ i know a good use of class variables that need to be inherited
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
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
that can be an rw method
masak moritz_: yes, but that's still per-instance, then.
moritz_ unless it's a class method 15:13
masak what's a class method?
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
there are other ways of doing that
moritz_ masak: one that doesn't access attributes (or calls methods that access attributes)
ash_ but an inherited class variable would make it a lot more simple
masak moritz_: ah, ok. 15:14
moritz_ method foo is rw { my $x }
masak moritz_: yes, that'd be the way to do it, I think.
moritz_ now you have an inherited class "variable"
masak or better yet, `my $x; method foo is rw { $x }` :)
moritz_ only downside: it's also writable from the outside
masak aye.
moritz_ masak: or even better: method foo is rw { state $x } 15:15
masak aye.
unless you want to access the same var from other methods.
moritz_ then you're breaking encapsulation
ash_ ruby has 5 types of variable scope: global, local, instance, class (inherited), and class-instance (not inherited)
they all seem pretty useful IMO 15:16
15:16 am0c joined
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
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.
thanks to type objects and metaclasses, we seem to do fine without it.
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
masak recall that 'class' as a concept isn't really (no pun intended) first-class in Perl 6.
ash_ yea
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.
if so, we can add them then :) 15:21
masak PerlJam: or just do like moritz_ suggested :)
jnthn rakudo: my $first-class = class { method omg { say "yes I am!" } }; $first-class.omg
p6eval rakudo 43f110: OUTPUT«yes I am!␤»
masak jnthn: :P
jnthn: bad choice of words on my part.
I meant that there's no Class type.
15:22 REPLeffect joined
jnthn rakudo: my $x = "the answer" but role { method Numeric { 42 } }; say +$x; 15:22
p6eval rakudo 43f110: OUTPUT«42␤»
jnthn \o/
masak: No, true. There is a ClassHOW though. :-)
masak jnthn: yes, but when types start screaming at me, I kinda zone out.
jnthn WHY? 15:23
masak ...
jnthn :-)
slavik google responded to my resume :D
jnthn Actually .WHY is only conjectural at the moment, iirc.
PerlJam WHAT
slavik don't know why anyone here would care
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.
TimToady well, if you move to Mountain View, it could raise the value of my termite-ridden house.
slavik TimToady: I am staying in NYC :P 15:25
TimToady funny how ridden means the opposite of rid...
jnthn
.oO( ridded? )
slavik TimToady: I watched your google tech talk
TimToady those were the early days of STD
slavik what surprised me was that at 20min (out of 60) you somehow realised you were running short on time
TimToady: it's still a good insight into the idea behind perl6 :) 15:26
I actually started wondering how easy it would be in embed parrot/rakudo/perl6 into C and such programs
TimToady at some point there was work on making parrot embeddable, but I don't know where that went 15:28
might've bitrotted by now 15:29
15:29 renormalist left, renormalist joined
jnthn I read that somebody recently did get it embeded into...Postgres, iirc. 15:29
TimToady and mod_parrot was a similar deal
slavik which reminds me ... who was working on mod_parrot?
^^
bah! 15:30
TimToady wins :)
slavik rakudo shouldn't ship without mod_parrot :)
slavik discovered mason
PerlJam slavik: but without mod_perl6 is okay?
slavik PerlJam: no!
PerlJam :)
slavik mod_parrot implies Perl6 15:31
PerlJam obviously not to me
masak Rakudo Star might ship with it. Rakudo proper will not.
jnthn Right.
PerlJam heh ... though I just realized (thanks masak++) that when slavik said "rakudo", I was thinking "Rakudo Star" 15:32
15:32 madalu joined
slavik rakudo star? 15:32
masak Rakudo StarrrrRRRR!
PerlJam masak: that'll be the september release 15:33
masak :P
slavik: use.perl.org/~pmichaud/journal/39411
ash_ i do think moritz_++ suggestion on using a method to simulate class variables seems fine by me 15:34
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
masak one thing is for sure: there are still things to do before the R* release.
PerlJam masak: anti-climactic?
masak PerlJam: well, not really.
there have been some exciting improvement thanks to nqp-rx.
things we couldn't do before.
but there's still a lot to do just to get back to what alpha does well. 15:36
and to making all our old examples work, the app cheese, the advent code, etc.
and the book still needs lots of love.
it's sort of "better than I feared but still far from ideal" feeling, I guess. 15:37
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:38
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.
masak what needs to happen for us to have named enums back?
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.
jnthn masak: Somebody to implement them. 15:41
15:41 ash_ left
masak jnthn: duh. could we look sometime at what the blocker actually was? 15:41
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.
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.
pmichaud masak: did you see my readline example in the backscroll?
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.
rurban I see.
slavik if Rakudo comes on xmas, then Rakudo* will be easter?
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.
masak slavik: Rakudo comes on xmas, but only because it's released every month :)
rurban Shoudl I write this into my release announcement :)
slavik masak: so we get xmas every month? SWEET!
PerlJam christmas every month!
pmichaud (spending 19 nights in 4 different hospitals in march was Not Fun.
15:44 k23z__ joined
jnthn :-( 15:45
[particle] every day will be xmas after perl 6 is released
audreyt++
jnthn hugme: hug pmichaud
hugme hugs pmichaud and blushes
masak [particle]: originally, that quote is from spinclad++, I think.
k23z__ Perl in a nutshell Perl, in a Nutshell
Perl, in a Nutshellwww.youtube.com/watch?v=Mxk5RMQF6Js
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.
PerlJam I wouldn't even say that
pmichaud Rakudo Star isn't *any* of the existing releases.
masak rurban: the initial estimate was 2010Q2.
pmichaud It's a distribution release instead of a compiler release.
rurban I was pointing to use.perl.org/~pmichaud/journal/39411
[particle] ah, spinclad++ 15:48
PerlJam rurban: for what are you writing?
rurban The cygwin announcement
[particle] rurban: it's still targetted for 2010Q2
rurban Ok
pmichaud rurban: see also the discussion about R* at irclog.perlgeek.de/perl6/2010-04-22#i_2251615
today's release was never intended to be R* on its own. 15:49
I had originally been targeting April 29 for R* release.
I think jnthn++ and I have the consensus that R* will likely be sometime in June
rurban I will not get rakudo* as official package name 15:50
pmichaud rakudo-star works.
rurban rakudo-star-1.0 maybe?
pmichaud I'd probably like to avoid the 1.0 -- maybe 2010.06
1.0 sounds too much like we're saying this is a production-ready release.
(at least to me)
also, others see 1.0 as having that meaning -- e.g. en.wikipedia.org/wiki/Software_vers..._milestone 15:52
"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."
Rakudo Star definitely doesn't meet that criteria.
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.
pmichaud I like dated releases and simple incrementing numbers.
sundar *dated idea => idea of using dates
pmichaud Dated releases are like automobiles -- if I tell you that I have a 2000 Volkswagen, that says a lot.
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 )
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.
the sequence numbers give an idea of the number of releases between two events 15:56
for example, how many releases were there between Perl 5.6 and Perl 5.8 ?
can't tell by looking at those numbers
when was Perl 5.6 released? Can't tell by looking at the number.
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?
my opinion is that it doesn't
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)
pmichaud "ready for what?"
Is Perl 5.12 ready?
TimToady WHY CAN'T YOU GUYS GIVE A STRAIGHT ANSWER!?!?!? :)
PerlJam exactly :) 15:58
pmichaud TimToady: exactly :)
actually, we could start giving a straight answer
slavik TimToady: that question sounds/reads weird coming from you ...
PerlJam but 5.12 doesn't have the vaporware stigma to overcome.
slavik pmichaud: xmas?
TimToady slavik: we don't like GILs here
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."
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 :)
PerlJam pmichaud: yeah, I tried that but got accused of claiming Perl 6 was production-ready when it is not.
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
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 justatheory left
pmichaud is still drafting his reply post to that. 16:00
slavik pmichaud: TimToady is probably more qualified since he's a languist ;)
takadonet pmichaud: which post? 16:01
pmichaud slavik: I was parroting a post from perlmonks
slavik oh
pmichaud takadonet: www.perlmonks.org/?node_id=835737
takadonet pmichaud: thanks
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
pmichaud or at least not a <em>real</em> compiler person.
rurban: I plan to do a post explaining the status of Rakudo Star in the next day or so. 16:03
Since I know a lot of people will say "it's April, what happened to Rakudo Star?"
rurban ok, thanks. we just have to plan a new name in advance
16:04 justatheory joined
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:04
slavik Rakudo ** ? 16:05
16:05 justatheory left, justatheory joined
pmichaud Entirely my fault there. 16:05
moritz_ pmichaud: I actually thought about the same thing 16:06
pmichaud: and then decided that announcement clearly says what it is for
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."
moritz_ a development release
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.
maybe I'll draft my message as a followup announcement. 16:08
rurban They'll ask me first anyway.
moritz_ pmichaud: you're also welcome to update the release announcment on rakudo.org
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
I had hoped to use March and April to set the stage and make the differences clearer, but failed on that.
rurban Ok, I'm releasing now.
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
pmichaud: should I push?
pmichaud moritz_: I thought I already fixed that in nqp-rx.
can I see the diff?
or tell me which :method gets the :nsentry ? 16:13
lisppaste3 moritz_ pasted "fix nqp-rx" at paste.lisp.org/display/98146
[particle] from backscroll... "releases between 5.6 and 5.8" isn't a good measure
there were 5.6 releases *after* 5.8
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)
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: steveblank.com/2010/04/22/turning-o...ion-field/
and Rakudo.
pmichaud I don't ever plan to go to major+minor release numbers.
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
pmichaud rurban: was that the version number discussion about Parrot, perchance? :-) 16:15
16:15 [particle] is now known as tpf|[particle]
rurban I forgot everything. Something about x.3 or x.4 being the middle of the year stable releases. Totally logic 16:16
16:17 cdarroch joined, cdarroch left, cdarroch joined
pmichaud That's Parrot. 16:17
I've never liked that scheme.
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.
moritz_ well, the stable releases switched from twice-a-year to quaterly
pmichaud and they aren't "stable releases"
moritz_ pmichaud: have you seen the patch? (nqp-rx)
pmichaud which is *another* problem.
moritz_ right, "supported"
pmichaud moritz_: yes. Apply it.
rurban I saw "supported"
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
pmichaud moritz_: actually, you only need to update the hll-grammar.pir file. the -s0 file is generated.
anyway, the steps would be: 16:20
moritz_ pmichaud: I needed to update the -s0 file, otherwise the compilate failed
that's what boostrapping gives you, if the underlying platform changes :-)
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.
moritz_ right
pmichaud (since 2.3.0 supported :nsentry but didn't honor it)
anyway, the steps are 16:21
(1) patch nqp-rx, make test
(2) make bootstrap-files, make test
(3) commit the non-bootstrap files
(4) commit the bootstrap files
(5) copy the src/stage0 files from nqp-rx repo into the parrot repo 16:22
(6) test parrot, commit the src/stage0 files in the parrot repo
(done)
moritz_ thanks
pmichaud I tend to want to do the commits of the stage0 (bootstrap) differences as separate commits
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
anyway, the "transfer to parrot" is always simply copying the src/stage0/*.pir files into the appropriate place of the parrot repo
(I guess we need to copy the tests too, perhaps)
moritz_ I'll put these steps into a new file in nqp-rx
pmichaud great, thanks.
PerlJam moritz++
moritz_ adding to the README feels wrong, most users don't care about it
pmichaud right.
it can go in docs/ 16:24
(and it's okay to create docs/ :-)
dalek p-rx: 779f443 | moritz++ | (3 files):
bump PARROT_REVISION and enable build
16:24 ash_ joined 16:28 CokeBot9000 is now known as TPF|Coke 16:32 finanalyst joined, masak left, finanalyst left 16:34 molaf left 16:35 TPF|Coke is now known as tpf|Coke 16:36 Xaero left
dalek p-rx: 515d267 | moritz++ | src/stage0/ (4 files):
update boostrap
16:41
p-rx: d823fc2 | moritz++ | docs/bootstrapping.pod:
[docs] bootstrapping guide
moritz_ jnthn++ # identifying the problem in nqp-rx
pmichaud we should eliminate that :nsentry entirely, btw 16:43
jnthn moritz_: Does Rakudo build on latest Parrot with this fix?
pmichaud something is doing a global namespace lookup that shouldn't be
moritz_ jnthn: nope, but it gets much further
jnthn I suspect an s/'::'/./ could do it in this case.
lisppaste3 moritz_ pasted "rakudo on parrot HEAD for jnthn++" at paste.lisp.org/display/98148
moritz_ it gets up to the point where it compiles the setting 16:44
jnthn Ouch.
That looks...bad.
moritz_ (that's with immutable_strings merged into master) 16:48
16:52 sundar left
jnthn afk for a bit 16:55
17:00 dakkar left 17:04 ash_ left 17:24 lihaitao joined, betterworld joined
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:29 envi^home left
pmichaud here's my draft response to the perlmonks thread -- comments welcome: pmichaud.com/sandbox/response.txt 17:37
17:37 pyrimidine joined
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
comments and suggestions welcomed.
pugssvn r30448 | moritz++ | [t/spec] test Seq.perl 17:38
pmichaud TimToady: I'd be specifically interested in any corrections if I've distorted reality surrounding your work on the grammar 17:41
afk, lunch retrieval
17:43 sundar joined
moritz_ pmichaud++ great response 17:43
PerlJam The very last sentence evoked a TED-prize feel for me :) 17:47
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"
"the problems without Perl 6" makes no sense, should that be "with"? 17:51
colomon pmichaud++ 17:52
pyrimidine (backlogging): hell, even I have a PhD. Molecular Biology, yes, but still...
tpf|[particle] pmichaud++, but the last sentence in yoru postscript has a dangling modifier 17:55
17:55 pmurias left
tpf|[particle] better as "even the ones I disagree with or don't find interesting" 17:55
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:57
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:58
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
so STD is spec
PerlJam mberends: we're moving away from compiler implementation == spec, but the grammar implementation is another matter. :) 18:00
jnthn pmichaud++ # very nicely written!
mberends: Many programming language specs include a formal grammar. Perl 6's just happens to be executable too. :-) 18:02
18:03 Grrrr left, mberends left, colomon left, PerlJam left, pnu left, zibri left, moritz_ left, spinclad left 18:08 Grrrr joined, mberends joined, colomon joined, bbkr joined, LionMadeOfLions joined, tewk joined, dhoss joined, PerlJam joined, pnu joined, zibri joined, moritz_ joined, card.freenode.net sets mode: +oooo mberends colomon PerlJam moritz_, spinclad joined 18:10 lihaitao left
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
what we have to be careful of us to not let STD look too much like a complete reference implementation then :)
18:12 smash_ left
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"
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: ^^
pmichaud TimToady: okay, thanks. What degree? 18:15
18:15 meppl left
pmichaud Bachelor's, Ph.D, ...? 18:15
TimToady BA
pmichaud Okay.
TimToady also two years graduate work in Linguistics
pmichaud okay
TimToady at U.C. Berkeley 18:16
undergrad from Seattle Pacific University
pmichaud would you consider your language design experience to flow directly from your academic experience?
18:16 hercynium left
TimToady among other things 18:16
18:16 justatheory left
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. :)
TimToady certainly I studied the Dragon Book :)
pmichaud pyrimidine: "And I don't want my response buried in a thread somewhere, so it 18:17
gets its own post."
pyrimidine yes
pmichaud I haven't decided whether the post should go to perlmonks or use.perl
or somewhere else
pyrimidine blogs.perl?
PerlJam pmichaud: both!
pyrimidine I vote both as well. 18:18
pmichaud well, I prefer one with links from the others, I think.
I want to revise the concluding paragraph a bit.
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.
I'm after those who think that any of what the troll is saying makes sense.
pyrimidine true
pmichaud The troll himself/herself really needs some serious hugs.
TimToady I agree on the s/without/with/
18:20 alester left 18:21 justatheory joined
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.
pmichaud ...because anonymonk thinks we're overly complexifying what (to him) seems like a simple thing to do. 18:22
however, believe me, if anyone had a simple answer to Perl 6 development, I suspect they would've done it by now.
Imagine the rewards and fame that would accrue!
diakopter heh. 18:23
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 irclog.perlgeek.de/perl6/2010-04-22#i_2253402
pmichaud thanks
my ability to type lately has become much less precise. 18:25
18:25 ash__ joined
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:25 rv2733 left 18:27 pyrimidine left, pyrimidine joined
diakopter TimToady: yeah but, you could label your own degree program, right? :P 18:28
w
:
hm.
TimToady the Natural and Artificial Languages was a self-designed major, yes
and though it was Seattle Pacific College when I started, it was Seattle Pacific University by the time I graduated :) 18:30
pmichaud heh
diakopter looks around in vain for masak
TimToady so I have a University education :)
not even counting Cal (and UCLA)
pmichaud all of the universities I graduate from changed their names after I left.
*graduated 18:31
18:31 justatheory left
pmichaud and not even by a little bit 18:31
diakopter wonders when they'll rename themselves Multiversities to reflect the relativism of Truth.
pmichaud Corpus Christi State University -> Texas A&M University-Corpus Christi
k23z__ it's a trap
pmichaud University of Southwester Louisiana -> University of Louisiana at Lafayette
18:31 ash__ left
diakopter or Pluraversities, I guess 18:32
or Antiversities 18:33
PerlJam "local maxima" :) 18:34
(yes, it's a long windy thought-path from riffing on universities to maxima/minima) 18:35
pmichaud I've never known PerlJam to be long winded. :-) 18:36
TimToady "sufficiently enough" is kinda redundant
pmichaud now "sufficiently" 18:37
TimToady you misspelled Artifical
pmichaud I just updated the academic credentials paragraph and fixed without->with ; feel free to reload
Fixed Artificial 18:38
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
speculations only used twice now 18:41
pugssvn r30449 | moritz++ | [t/spec] define that Rat.new() returns a kind of 0
TimToady after, "can be done by a few
dedicated undergraduates.
you might add "We already have lots of those kinds of languages." 18:42
pmichaud can I quote you on that? ;-)
TimToady "Sure!"
moritz_ quoting is quite versatile in Perl 6 :-)
takadonet never seen so much effort put into a post
tpf|[particle] texas-quote him!
pmichaud added the quote 18:43
oh, I'll do it as a link to the log here
TimToady s/kind/kinds/
pmichaud updated (changed the quote attribution)
takadonet: oh, from my perspective, this is actually a quickly-put-together post 18:44
relative to the time I've taken on some others
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?
TimToady you just got through saying that some of the anonymous critics were trying to discredit Pelr 18:46
Perl
pmichaud I'm still reworking the conclusion altogether
so that last paragraph before the signature is going to be redone pretty significantly 18:47
but I need a walk first
keep suggestions and comments coming :)
bbiab
18:49 stephenlb joined 18:50 sjn joined
pugssvn r30450 | moritz++ | [t/spec] test that you can call a method all(), and access attributes in there (RT #69202) 18:50
sundar degrees and backgrounds 18:53
in language theory and practice.
oops.. premature paste. :)
moritz_ std: /\G/ 18:54
p6eval std 30448: OUTPUT«===SORRY!===␤Unrecognized regex backslash sequence at /tmp/1R665RzhNw line 1:␤------> /\⏏G/␤Check failed␤FAILED 00:01 110m␤»
tpf|Coke pmichaud++
diakopter TimToady: it's the daw-PELR effect :P
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
sundar pmichaud: "Or, looking at it another way if you feel [...]" is easier to understand with a comma after "way" 18:57
19:00 justatheory joined
sundar pmichaud: in fact I don't see what purpose that sentence serves. 19:02
k23z__ P vs. NP the epic battle www.youtube.com/watch?v=HjUEEHTyhdA
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:03
sundar thinks he might some day grow up to be a proofreader! 19:04
moritz_ thinks that exclamation marks don't enhance credibility - rather the opposite 19:05
PerlJam wonders how punctuation affects credibility at all except perhaps in a negative fashion :) 19:06
moritz_ just found out that rakudo probably passes ~250 tests more than noted in the release announcment 19:08
colomon moritz_: no way!
moritz_ I've used tools/update_passing_test_data.pl to find passing test files
19:09 justatheory left
pmichaud (that we're already doing) I'm going to link to an example. 19:09
I think it's better with the period.
moritz_ and it seems nobody looked that tool very closely in the last few months
it started parrot -G perl6.pbc
so... removing that -G, and re-running, revealed that two of the S05-mass files pass 19:10
(I always run that tool with a ulimit set, otherwise it occasionally kills the computer)
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
colomon: it shows you how many tests pass before crashing 19:12
colomon moritz_: sweet
19:13 astrojp joined
moritz_ t/spec/S32-list/map.t is such a candidate 19:13
oh, I don't like that file
far too many tests for far too few features
colomon yeah, it's in the back of my head as trouble
jnthn back after $cooking-adventure 19:14
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
colomon: currently it's 6 tests for a 5 elements return list
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.
moritz_ one length, one @result.join(', ');
and the official cout will be much lower
colomon like on series.
only with a length check too.
nice.
moritz_ and the test descriptions just plain suck 19:19
colomon looks forward to seeing a fixed version. :) 19:22
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)␤»
moritz_ why doesn't this list the candidates?
rakudo: say ({; $_ => 1}).WHAT
p6eval rakudo 43f110: OUTPUT«Hash()␤»
moritz_ looks like a bug to me 19:25
colomon yup.
rakudo: my @list = 1 .. 5; say map {say 'a'; $_ => 1}, @list
p6eval rakudo 43f110: OUTPUT«a␤a␤a␤a␤a␤1 12 13 14 15 1␤»
colomon moritz_++ 19:26
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
rakudo: say +(1, 2).map: {$_, $_} 19:30
p6eval rakudo 43f110: OUTPUT«2␤»
moritz_ should be 4
colomon right, I ran into that while doing $work the other day. 19:31
pmichaud more minor updates
19:32 molaf joined
pugssvn r30451 | moritz++ | [t/spec] rework map.t 19:32
r30451 |
r30451 | Replace excessive testing of elements with a single test for
r30451 | @result.join($sep). Also adapt Rakudo fudging to current state-of-the-art.
19:33 tri1 joined
colomon pmichaud: can you repost the url? 19:33
pmichaud pmichaud.com/sandbox/response.txt
(about to become response.html)
colomon danke.
snarkyboojum type here? "the community, And"
typo even :) 19:34
pmichaud reload -- you probably caught it in the middle of a save
oh wait, comma instead of period.
fixed.
snarkyboojum :)
PerlJam pmichaud++ the last two paragraphs are gold.
pmichaud Platinum is the metal of choice around our house lately. Although I think Paula may be sick of it. :-) 19:35
dalek kudo: eb0d263 | moritz++ | tools/update_passing_test_data.pl:
[tools] run parrot without -G
19:36
kudo: 7d43ee0 | moritz++ | t/spectest.data:
4 more passing test files
pmichaud (sorry, medical joke for those who didn't catch it)
colomon pmichaud: figured. 19:37
pmichaud en.wikipedia.org/wiki/Carboplatin # platinum reference
colomon pmichaud++ # still a great post 19:40
snarkyboojum might have a newline between goal and s at "that our goal" 19:41
pmichaud snarkyboojum: thanks, fixed
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
p6eval alpha 30e0ed: OUTPUT«aa:b␤»
mberends rakudo: my @a=" aa "," b"; my @b=@a.map(*.trim);@b.join(":").say
p6eval rakudo 43f110: OUTPUT«␤Null PMC access in find_method('params')␤current instr.: 'perl6;Block;count' pc 502130 (src/gen/core.pir:77408)␤»
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)␤»
moritz_ rakudo *.trim
rakudo: *.trim
p6eval rakudo 43f110: ( no output )
moritz_ rakudo: <a b c>.map(*.trim) 19:46
p6eval rakudo 43f110: ( no output )
TimToady pmichaud's version sounds right to me
whoops, wasn't on the right page...
moritz_ rakudo: my @a=" aa "," b"; @a.map(*.trim);
p6eval rakudo 43f110: ( no output )
moritz_ rakudo: my @a=" aa "," b"; my @b = @a.map(*.trim);
p6eval rakudo 43f110: OUTPUT«␤Null PMC access in find_method('params')␤current instr.: 'perl6;Block;count' pc 502130 (src/gen/core.pir:77408)␤»
mberends rakudo: <a b c>.map(*.trim).say
p6eval rakudo 43f110: OUTPUT«␤Null PMC access in find_method('params')␤current instr.: 'perl6;Block;count' pc 502130 (src/gen/core.pir:77408)␤»
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)␤»
moritz_ rakudo: say *.trim.WHAT
p6eval rakudo 43f110: OUTPUT«Block()␤»
moritz_ rakudo: say *.trim.params
p6eval rakudo 43f110: OUTPUT«Method 'params' not found for invocant of class 'Block'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
colomon !!!
moritz_ rakudo: say *.trim.signature
p6eval rakudo 43f110: OUTPUT«␤Null PMC access in type()␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
pmichaud .parameters, perhaps? 19:48
moritz_ .signature.somthing
seems to be related to rt.perl.org/rt3/Ticket/Display.html?id=69362
colomon I had no idea *.method was implemented yet. 19:49
moritz_ rakudo: say (*.uc).('foo')
p6eval rakudo 43f110: OUTPUT«FOO␤»
jnthn .signature.params
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)␤»
frettled pmichaud++ - I like that post.
jnthn ah.
I need to work out what .signature on a multi should do.
frettled I never saw whatever you responded to, pmichaud, but that doesn't matter - it stands on its own.
jnthn Obviously, not explode. :-)
frettled hm
moritz_ my first reaction is "junction", but that might not be quite right 19:51
frettled maybe explode is exactly what it should do
moritz_ don't think that blends well with the rest of Perl 6
frettled but then more like an exploded view than a huge scattering of wreckage
jnthn moritz_: Yeah 19:53
moritz_: I may stick in "junction of the signatures" and we see what happens. :-)
TimToady pmichaud: the final "continues" should be "continue" for parallelism
I'd also swap the "disagree with" and the "don't find interesting" 19:54
frettled jnthn: that phrase just begs for a netnews signature pun 19:56
19:56 _jaldhar left
mberends moritz_: the origin of the NPMCA in find_method('params') bug: github.com/masak/proto/blob/master/...r.pm6#L576 19:57
moritz_ mberends: as a workaround, {.trim} 19:58
mberends thanks moritz_, will test immediately 19:59
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
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)␤»
moritz_ that's because Hash is a role, not a class
20:01 ShaneC joined, ShaneC left
moritz_ (maybe unrelated, but freaked me out while fudging some files a few days ago) 20:01
colomon specifically has %.bar is rw; in S12-class/attributes.t 20:02
(role issue may be behind the scenes)
isa_ok($foo.bar, Hash) fails. 20:03
but the rest of the tests on %.bar are fine.
20:04 lichtkind joined
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
colomon mberends: \o/
that's awesome!
mberends colomon: proto installed mandelbrot earlier today... :) 20:05
jnthn colomon: I'm still not sure what to do with those isa tests.
colomon mberends++
jnthn If you re-write isa_ok $foo, Hash
as ok $foo ~~ Hash
Then it works of course. 20:06
In general, doing .isa on a role probably won't work out...
Or at lesat, doesn't make much sense to me.
Or asking if something isa role.
colomon and Hash is a role, eh?
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?
jnthn Unfortunately, when I tried to do that, we get into trouble with Parrot's Hash type
Or something.
colomon Sounds like it's fine adding it as a TODO test, then.
jnthn colomon: tbh for *most* "is this the correct type" checks, I'd just write them in terms of smartmatch.
colomon s/adding/leaving/
jnthn It's the way I always encourage people using Perl 6 to do them. 20:08
Because it means you can refactor a class into a role or vice versa
colomon makes sense.
jnthn And not have to update your code all over the place that's doing the checks.
20:08 SmokeMachine left 20:10 justatheory joined
pmichaud okay, semi-final draft now (with links) at pmichaud.com/sandbox/response.html (note .html, not .txt) 20:10
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
s/would/might/
mberends pmichaud: anonoymous in paragraph 3
pmichaud fixed "anonoymous" (thanks) 20:13
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"
the "not" distributes badly
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
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:19
mberends k23z__: please don't go off-topic during the current discussions 20:20
20:21 meppl joined
pmichaud mberends: "inadequate toolset" is what others claim 20:23
mberends jnthn: it might be re-quoted out of context, shooting your foot
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
mberends just $0.02 worth ;-)
20:24 masak joined, kensanata joined
masak ahoj, #perl6! 20:25
m6locks hejsan
pmichaud agreed, the 'not' distributes wrong
jnthn ahoj, masak
pmichaud moved it inside the quotes, does that work?
not quite. :-) 20:26
TimToady well, I don't think the original was actually claiming we were open source rookies
pmichaud right
TimToady so I'd just drop that half
or modify it to point out that we have a lot of experience in nurturing open source rookies 20:27
20:28 SmokeMachine joined, hghgd_ joined
pmichaud rewritten. 20:30
jnthn reading for a bit, then some Rakudo hacking
20:31 hghgd left
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:31
ww 20:32
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:33
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
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"
pmichaud yeah, I'll do Tene++'s suggestion
frettled Tene++ - better
pmichaud updated.
updated again to say "that someone has to clean up" 20:36
Tene Yes, better.
mberends this collective editing is makes an outstanding post 20:37
frettled community++
pmichaud I find that collective editing makes for superior work, yes. Indeed, that's the open source philosophy in many quarters. :)
frettled It's like submitting a paper for review; first you use your colleagues and friends for a pre-review.
PerlJam frettled: only with a quicker feed-back cycle :) 20:38
frettled Yep, IRC is PDQ :)
masak diakopter: you sought me earlier? 20:41
pmichaud hmmm, perlmonks.org has gotten very slow suddenly
20:41 hercynium joined
masak others have been saying that today on Twitter. 20:41
mberends masak: $ proto install tardis # Downloading tardis...downloaded\nDownloading yapsi...downloaded\nBuilding yapsi...built\nBuilding tardis...built\nInstalling yapsi...installed\nInstalling tardis...installed 20:42
masak mberends: awesome. 20:44
mberends++
wait... is that proto running on alpha?
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.
mberends cheese will be on the table shortly
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.
frettled Tene: goodie!
mberends Rakudo 2010.04 and Parrot 2.3.0
Tene I've missed working with all of you.
masak mberends: what, in that case, constitutes 'building' tardis and yapsi?
hugme: hug Tene
hugme hugs Tene
frettled I still miss working :) 20:46
mberends masak: that's up to your Makefiles...
masak ooh! they're hardcoded, now I remember :)
mberends some specification required, and a new 'make install' protocol
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:47
masak mberends: I might have time to co-evolve a specification and a core test suite this weekend. how about you? 20:48
snarkyboojum: o/
PerlJam Tene: not exciting, but cool that it works now ... "%hash<key>[5].(<foo bar>) now interpolates in double quoted strings"
Tene perl6: say "{5}.frob" 20:49
p6eval elf 30452: OUTPUT«{5}.frob␤»
..pugs, rakudo 7d43ee: OUTPUT«5.frob␤»
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
pmichaud oh wait, I just realized an important point missed in my response.
fixing..... (tee hee!)
masak Tene: oh, and an initial sigil :P 20:51
Tene masak: I was checking that post-stuff didn't tack on to {} interpolation.
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.
Tene: oh, it won't. I saw jnthn implement it :) 20:52
jnthn++, I mean.
Tene :) 20:54
masak it was definitely that jnthn++ guy did it :) 20:55
frettled That jnthn++ guy certainly gets around. 20:56
PerlJam rakudo: say "{'wee'}.uc()"
p6eval rakudo 7d43ee: OUTPUT«wee.uc()␤»
PerlJam Hmm. :)
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:57
masak both seem good improvements. 20:58
frettled pmichaud: soon there are so many changes that it ought to have been a Wikipedia article ;)
pmichaud frettled: you should see how many changes my drafts go through *before* I tell people about them :)
I've come to learn that I'm not a particularly fast writer.
frettled pmichaud: or perhaps I'd rather not, I suspect it's somewhat like my own posts used to be on netnews 20:59
It's not the LOC or LOL (lines of literature), it's the QOC and QOL. :)
pmichaud changed "lead implementor" to "primary implementor"
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
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
21:01 rurban left, ReiniUrban is now known as rurban
frettled Yep, there's usually a huge effort behind those things. 21:01
tpf|[particle] is that a fat joke? 21:02
21:02 tpf|[particle] is now known as [particle]
[particle] takes off his tpf hat 21:02
PerlJam it is now
[particle] :)
pmichaud now wipes off his keyboard. 21:03
frettled :)
pmichaud okay, I'm done. I'm posting it.
frettled \o/ 21:04
PerlJam is still a little irked by the anonymonk's idea that language design/compiler construction is like a recipe
[particle] we'll lput our further edits in a response to your post.
frettled PerlJam: But it is! In compilers 101.
;)
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?
(and therein lies the problem) 21:06
PerlJam frettled: what are you doing ten feet away? You need to be closer.
frettled or 11 feet away, so that I could use my 11-foot pole 21:07
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
(but perhaps with better spelling)
frettled I sort of understand them.
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"
I'm fine with criticism. It's uninformed criticism that bugs me.
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.
PerlJam pmichaud: but it's not a "real" release
21:10 hghgd_ is now known as hghgd
masak PerlJam: now *that* argument I really hate. :( 21:10
pmichaud PerlJam: yeah, I know. "What's a 'real' release?"
pugssvn r30453 | kyle++ | Test for RT 74448: eval of empty string should be Nil
PerlJam masak: indeed. That gets on my nerves too
pmichaud And why would anyone believe that 'now' and their notion of 'real release' are in any way compatible.
masak PerlJam: it usually comes right after I tell someone stubborn that yes, there are Perl 6 releases.
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.
masak PerlJam: and they go no-true-Scotsman on me as if that were something original.
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.
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
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.
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? ;-)
masak Perl 8!
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.
GoogolPerl
masak I wouldn't be here if it weren't for that announcement in 2000.
PerlJam I still blame orwant :)
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.
So I hope I can spend the coming years contributing 10% of what masak++ has done. That would be awesome. 21:14
21:14 boigaz joined
masak me? I'm just contributing to the torment of the developers. :P 21:15
frettled Yes, exactly, 10% of the pain.
pmichaud fast becoming a time-honored tradition, that.
PerlJam at least something is fast ;)
mberends masakism means self.torment(), apparently
masak still not up to that promised jackhammer speed, though. 21:16
I need to automate bug-finding a bit more...
massive testing of the app cheese is probably the way.
PerlJam masak: just write a Synopsis compiler
masak: and run it on rakudo
21:16 kensanata left
masak :) 21:17
frettled BTW, I'm positively surprised that 5.12 got here so quickly.
masak obra++
PerlJam frettled: I bet you won't be so surprised when 5.14 gets here
mathw 5.12 is quite exciting 21:18
PerlJam I won't be surprised until 5.mumble *really* starts to look like Perl 6.
mathw I also noticed that it's called Perl 5 version 12, which I thought was quite nice
frettled PerlJam: Maybe I'm so deep in dementia that I'm constantly surprised by then.
mathw: ooh, nice
masak mberends: subset DateTime::Formatter where { .can<fmt-datetime fmt-ymd fmt-hms> } 21:19
mberends: that looks... wrong.
the .<> will be seen as a hash slice on the .can method call.
probably not what was intended.
PerlJam add some parens 21:20
masak I will. just checking.
PerlJam (or a space)
masak nope.
it's a method call.
I didn't know .can accepted a list.
21:20 pyrimidine left
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.
masak (given that when it accepts a string it returns a dispatch order) 21:21
PerlJam frettled: heh
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
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
masak or something like that.
PerlJam (I would expect .can LIST to mean .can all LIST) 21:22
masak PerlJam: again, there's no such syntax.
21:22 rv2733 left
masak std: .can <a b c> 21:22
p6eval std 30452: OUTPUT«===SORRY!===␤Bogus term at /tmp/y1x7Hj9H46 line 1 (EOF):␤------> .can <a b c>⏏<EOL>␤Undeclared routine:␤ 'c' used at line 1␤Parse failed␤FAILED 00:01 110m␤»
21:22 boigaz left
PerlJam er, modulo syntax :) 21:22
masak PerlJam: it's 2010! learn Perl 6 :P
PerlJam I don't write enough of it for some things to stick well. 21:23
masak I understand. just saying you should :)
PerlJam you're right. I should
masak prods PerlJam
frettled Perl 6: not sticky
21:24 mariano__ left
masak but iffy and fiddly :) 21:24
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:26
mberends hmm, %4d would be safer 21:27
masak or %d.
I think %4d would insert spaces, no?
PerlJam Perl 6 ... the 10,000 year language
masak didn't want to say it :P
mberends yes, so that the size does not vary
ISO8601 should have the final word 21:28
PerlJam Besides ... that's a bug that can be fixed later ;)
masak mberends: that 4 feels arbitrary, and the spaces potentially bothersome.
mberends: kudos on strftime, by the way.
I don't think it needs to be moved to a separate file. let's spec it instead. 21:29
I suspect %a and %A will need to fall under the l10n part of the spec somehow.
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.
words are ok if their source is pluggable
masak mberends: I know a better way to write that. care if I do it?
mberends and posix can be the default locale for names 21:31
masak: so do I, but the time is better spent doing other stuff
masak mberends: loop and find all '%', switch on the letter after it. much less repetition.
oh, it'll only take ten minutes of my time :)
PerlJam where is this code you are looking at?
masak does it now
PerlJam: src/core/Temporal.pm 21:32
mberends :-) yes, but not a switch, a hash
masak turns out the difference isn't that great.
but a hash might be better for other reasons.
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".
masak I sit corrected, then.
PerlJam Hmm.
masak frettled: does it mention five-digit years? 21:35
21:35 hercynium left
mberends the details of strftime interest me less than the concept of slimming the huge monolithic core 21:35
frettled masak: yes
masak mberends: you're probably right about loadable modules. I was speaking of strftime in particular.
frettled "By mutual agreement of the partners in information interchange, it is permitted to expand the component
21:35 pmurias joined
frettled identifying the calendar year, which is otherwise limited to four digits. This enables reference to dates and 21:35
times in calendar years outside the range supported by complete representations, i.e. before the start of the
year [0000] or after the end of the year [9999]. 21:36
ow, hard newlines, hatessss them
"
PerlJam I think scanning the string from left to right would closer match what POSIX::strftime does now
mberends rakudo: 12345.fmt("%4d").say
p6eval rakudo 7d43ee: OUTPUT«12345␤»
mberends rakudo: 12345.fmt("%04d").say; 12.fmt("%04d").say 21:37
p6eval rakudo 7d43ee: OUTPUT«12345␤0012␤»
pmichaud www.perlmonks.org/?node_id=836349 # now posted, more minor edits
PerlJam for instance .... I think this version would turn "%%years" into "%10ears" rather than "%years"
pmichaud THANK YOU to everyone for your suggestions and help, the post is far better because of it.
21:38 TiMBuS joined
frettled pmichaud++ for taking the time and effort 21:38
pmichaud hugme: hug everyone
hugme hugs everyone and blushes
masak PerlJam: yes, you're right.
pmurias diakopter: hi
masak PerlJam: the %% case is what I'm thinking about now, though.
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 '%'.
mberends it turns out that strftime() has several other locale dependencies, such as the '-' and ':' separators 21:40
frettled Yep. 21:41
mberends so making swappable formatters is quite crucial
masak aye.
it all needs to interact nicely with the locale business, too.
PerlJam "%%a" would become "%Thu" which would then become "21:41:35hu"
21:41 tri1 left
mberends and I figured that if we can do that, we can have swappable parsers too 21:42
PerlJam (assuming a loop)
frettled So %%ah would become %Thu would become 21:41:35huh ;)
mberends lol
masak PerlJam: that's wju I need to take %% out-of-band, as I said.
s/wju/why/
PerlJam right, just thinking out loud some more :)
masak PerlJam: actually, maybe the right way to do this is to build a new string on the side from scratch. 21:43
somehow I sense that .comb figures into this, too...
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:44 snarkyboojum left
mberends %9N failed in testing because of a Num restriction :-/ 21:45
masak actually, I think those three are better handled separately.
jnthn returns 21:46
mberends rakudo: my $second = 3.98765432;
p6eval rakudo 7d43ee: ( no output )
mberends rakudo: my $second = 3.987654321;
p6eval rakudo 7d43ee: ( no output )
mberends (blew up: no bigint lib loaded) 21:47
pmichaud also at use.perl.org/~pmichaud/journal/40322 .
21:47 iblechbot left
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
pmichaud++
mberends masak: exactly
masak makes a hash of closures
mberends masak: exactly, again 21:49
jnthn pmichaud++
frettled pmichaud** ? :D 21:50
21:50 wknight8111 joined 22:01 SmokeMachine left
jnthn std: class C does OhNoThisRoleDoesNotExist { } 22:03
p6eval std 30453: OUTPUT«ok 00:01 107m␤»
diakopter TimToady: did you see my question about array declaration vs generic variable declaration
jnthn TimToady: ^ Maybe missing is_type call in module_name 22:04
22:04 clintongormley left
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 :-(
if someone else is able to do that, that'd be great. 22:05
jnthn diakopter: I'd be curious to see that - what/when was it? 22:07
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
jnthn diakopter: It'd be an error.
diakopter probably resulting from my confusion over how it's spec'd
what was my question?
jnthn I think because of its position it'd be unambiguously parsed as a type name and thus a parametric type.
std: my int[int] $foo = 1;
That one.
p6eval std 30453: OUTPUT«ok 00:01 108m␤» 22:09
jnthn If you want an array of ints then
my int @foo;
or
my Array of int $foo;
my int[int] $foo; # fail because int is not a parametric role
diakopter std: my Array of Int[Array] $foo = 1;
p6eval std 30453: OUTPUT«ok 00:01 108m␤»
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)␤»
diakopter jnthn: ok; thanks
jnthn afaict, STD doesn't worry about what kind of type things are
Just that they're type names.
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:11
TimToady: Ah, it's wrong to put the check in module_name. 22:16
(just tried and, yeah, epic fail :-))
Putting it in the trait_mod instead.
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
masak was there a known workaround for this one? 22:19
(other than writing things out as a loop doing .index) 22:20
jnthn rakudo: say "foo".subst( /(o)/, "x", :global ) # does this work? 22:21
p6eval rakudo 7d43ee: OUTPUT«fxx␤»
jnthn rakudo: say "foo".subst( /(o)/, { "x" }, :global ) # this?
p6eval rakudo 7d43ee: OUTPUT«fxx␤»
masak sure. it's the $0 that's the problem.
jnthn rakudo: say "foo".subst( /(o)/, { $0 }, :global ) # this?
p6eval rakudo 7d43ee: OUTPUT«Method 'postcircumfix:<[ ]>' not found for invocant of class ''␤current instr.: '!postcircumfix:<[ ]>' pc 10896 (src/builtins/Role.pir:78)␤»
jnthn rakudo: say "foo".subst( /(o)/, { uc(~$/) }, :global ) # this?
p6eval rakudo 7d43ee: OUTPUT«fANY()ANY()␤»
masak or rather, its desigaring $/[0]
jnthn Oh
Well that explains a lot.
masak aye. 22:22
jnthn We ain't getting $/ in there
masak oh well.
jnthn So it's not a $/[0] problem at all.
Just a ENO$/
masak I'll push tonights patch as a branch, then.
22:24 ash__ joined
masak s/ts/t's/ 22:25
mberends: here's how it ended up: github.com/rakudo/rakudo/commit/720...8c292b6a1c 22:26
mberends looking
masak I don't know if the tests still pass, due to the above rakudoTODO.
jnthn I think the above rakudobug decidedly means the tests won't pass. ;-) 22:27
masak yeah, kind of a show-stopper. 22:28
jnthn rakudo: class C does OhNo { }
p6eval rakudo 7d43ee: OUTPUT«Null PMC access in type()␤current instr.: 'perl6;C;!class_init_11' pc 352 (EVAL_1:161)␤»
jnthn masak: Can you remember submitting that?
masak I can.
jnthn masak: If so, can you think what you may have called the ticket?
masak I've encountered it many times in the cheese.
masak looks
jnthn I concluded it sucks and decided to make things better. 22:29
> class C does OhNo { }
Typename OhNo must be pre-declared to use it with does at line 1
masak jnthn: I called it rt.perl.org/rt3/Ticket/Display.html?id=66782 , it seems.
jnthn++
jnthn Also 22:30
rakudo: class A { }; class B does A { }
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)␤»
jnthn Now you get the rather more helpful
> class A { }; class B does A { }
Can only use does with a role, but A is not one
masak \\oo//
jnthn Though I have the RT for that in front of me. :-)
masak .oO( I'd rather have an RT in front of me... )
jnthn masak: Oh! 22:31
masak: I didn't mean *that* bug.
masak oh.
which one did you mean?
jnthn I meant the "class C does OhNo { }" gives a crappy error one.
masak oh, ah.
masak looks
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.
lichtkind did www.perlfoundation.org/perl6/index....ine_traits 22:32
jnthn mberends, masak: I can have a peek at the bug and see if I can fix it.
mberends masak++ for the hash of closures, it's what I would have chosen too.
masak mberends: well, .=subst is really what we want here, because it's one-pass and doesn't have any problems with '%%'.
jnthn: only found this so far: rt.perl.org/rt3/Ticket/Display.html?id=74092 22:33
jnthn: sounds great!
jnthn mmm...yulia.
Sadly that bug is still there. :-/ 22:34
masak jnthn: rt.perl.org/rt3/Ticket/Display.html?id=74032 22:36
the RT system and I are one.
masak levitates
jnthn Excellent.
Typename Pet must be pre-declared to use it with does
:-) 22:37
masak: Well, you've put enough of you into it... :-)
masak I've created... a monster!
22:37 Matthias_ joined
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?
mberends Step right in here, sir! 22:39
masak Matthias_: yes. what do you want to know?
masak and Matthias_ privmsg 22:40
22:41 hercynium joined 22:42 ash__ left
sundar masak: for the sake of the other would-be volunteers here, could you summarize anything helpful from the privmsgs? 22:48
masak oh, sure. 22:49
first I passed on this link: perlbuzz.com/2009/08/perl-6-is-my-mmorpg.html
it's written by some frood, forgot who :) 22:50
22:50 ruoso left
masak now we're talking about having fun and managing time and starting small. 22:51
22:55 ash_ joined
ash_ how goes it 22:58
masak still converging. :)
ash_ to zero or pi?
masak too early to tell. 22:59
hopefully to 6.0.0, though.
ash_ that would be cool 23:00
masak yes. I guess that's why most of us hang around here. 23:01
jnthn orly? 23:02
:-)
masak and for the beer, of course.
jnthn Yeah, that's why I'm here. 23:03
I occasionally write patches to keep that from being too blatant though.
.oO( I need a "Will patch Rakudo for beer" t-shirt )
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.
I'm really not too interested in Perl 6 as such.
:D
mberends hangs out here to be able to say that he hangs out here 23:05
masak ah, right. the hip factor. tres chic.
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 :)
*citizens # better
jnthn ash_: Nothing useful. 23:07
Probably makes Rakudo give you a stupid unhelpful error...
masak rakudo: class Foo { our $.a }
ash_ no error
p6eval rakudo 7d43ee: ( no output )
jnthn heh. :-)
rakudo: class Foo { our $.a }; say Foo.new.a
p6eval rakudo 7d43ee: OUTPUT«Method 'a' not found for invocant of class 'Foo'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
pmichaud std: class Foo { our $.a }; # curious
p6eval std 30453: OUTPUT«ok 00:02 107m␤»
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
pmichaud: Or did you mean, take two RSAs to make another one?
Rather than concantenate the things in the RSA?
ash_ i rather like the perl6 channels attitude towards programming, oh, and i can say i was apart of something maybe
pmichaud jnthn: the latter 23:09
jnthn Which latter? ;-)
two RSAs to one?
I guess your splice comment fits that.
pmichaud yes
jnthn splice is probably fastest.
pmichaud each POST::Sub ends up being its own CodeString
jnthn Ah, OK.
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
23:10 orafu left
jnthn nod 23:10
23:10 orafu joined, snarkyboojum joined
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.
s/doesn't always/almost never/
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.
pmichaud I suppose one could also stringify one RSA with a join and push it onto the other.
jnthn True
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.
jnthn Wonder if we can have a descendent join.
oh wait
It's an RSA so it can't ahve an RSA in it.
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.
jnthn d'oh.
Right.
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.
pmichaud well, I'd think that we could find that out somewhat with NQP performance
jnthn ah, good point.
pmichaud if NQP takes significantly longer, then Rakudo will *really* take significantly longer.
jnthn Rakudo doesn't build on latest Parrot.
pmichaud because NQP also generates not-insignificant amounts of code.
jnthn Testing with nqp sounds sensible. 23:14
I don't expect Rakudo on latest Parrot to get unbroken in a great hurry.
pmichaud oh, I did.
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 Matthias_ left
jnthn Right 23:15
pmichaud so those refactors were the new strings implementation, :nsentry, etc.
jnthn Which is why we're broken on post-2.3.
pmichaud oh, I read "don't" as "didn't", sorry.
jnthn ah, OK. :-)
pmichaud I'm obviously over-tired again. Plus I have to go buy some food and appliances for the house.
jnthn as confused for a moment. 23:16
23:16 pmurias left
jnthn *was 23:16
I'll maybe see if I can unbreak it at the weekend.
Or we'll end up blocking because we want nqp-rx updates after not long, or something.
sundar masak++ # for the great article by some frood :) 23:17
dalek kudo: 08c4cf0 | jonathan++ | src/Perl6/Grammar.pm:
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.
kudo: 776e793 | jonathan++ | src/ (2 files):
Sensible rather than meaningless unhelpful error when using does trait mod on something that's not a role.
masak sundar: thanks.
jnthn Yay, two more tickets just needing spectests. :-)
pmichaud afk, dinner and shopping
jnthn o/ 23:18
masak last night I refreshed my memory on where it was I was blocking on GGE grammars.
thing is, PGE uses the fact that there's no invocant type checking in PIR.
so it actually calls Match methods on Str.
naturally, I can't do the same in Perl 6. 23:19
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?
masak the 'iscont' flag is set when a Match is created from a Str, and unset when a Match is created from another Match.
rakudo: package A { our $b = 42; }; say $A::b
p6eval rakudo 7d43ee: OUTPUT«42␤»
masak ash_: seems like it.
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)␤»
ash_ rakudo: class Foo { our $a }; $Foo::a = 4;
masak in this rather ingenious way, only the outermost grammar rule has the 'iscont' flag set.
p6eval rakudo 7d43ee: ( no output )
masak I'm at a loss for how to faithfully emulate this behaviour. 23:22
ash_: no, 'our' and the '.' twigil don't match meaningfully.
ash_ should that be an error?
std doesn't complain, but that doesn't mean it shouldn't.... 23:23
masak it could probably be an error somewhere, yes.
but until it is, just try to avoid doing it :P
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.
masak ash_: I don't think it could.
it kinda tries to say two contradictory things.
the 'our' says 'install this variable name in the current package and lexpad'.
TimToady see S12:725 23:25
masak shuts up and reads
oh, right.
TimToady: not sure I like that.
ash_ ah, so it should work, its just not
23:27 mberends left
jnthn IIUC, it just means "it's a normal our variable + an accessor method for it" 23:27
But in that case
I'd imagine
our %!cache;
means
our %cache;
Which feels...odd.
masak does it work in a nested scope, such as a method?
also, I think calling them 'class attributes' is misleading, given that the variables won't inherit. 23:28
dalek kudo: 0bea1f4 | jonathan++ | src/Perl6/ (2 files):
Fix to role type parameter handling so we don't get scoping of parameters wrong.
kudo: 3954332 | jonathan++ | t/spectest.data:
Turn S14-roles/parameterized-basic.t on again; we pass 18 tests in there after the previous fix.
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
masak ash_: hm. package scope and lexical scope aren't 100% orthogonal, I think. 23:30
ash_: they're still almost they same kind of thing.
my/our are much less different than, say, our/has.
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?
ash_ (i might be looking at this from the wrong perspective)
masak ash_: no, it sounds good. 23:33
TimToady ! does not mean 'instance attribute'
! means 'no public accessor'
masak ash_: package scope is what you get when you do `package A {}` or something synonymous.
TimToady 'has' means 'instance'
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
has = instance, our = package, my = lexical, ?
masak as far as I grok it, yes. 23:35
ash_: I think for the purposes of an implementation, 'my' and 'our' scoping are indeed orthogonal.
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
*the
masak moritz_++ pointed out that even 'our' variables install themselves in the lex... what TimToady said.
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
since you can have lexically scoped packages
ash_ hmmm
masak TimToady: I think I'll retract my doubts about 'my $!class-var;' et al for now.
TimToady or even anonymous packages
std: my $x = package {...} 23:38
p6eval std 30454: OUTPUT«ok 00:01 110m␤»
ash_ hmm
then my strategy would not work out, methinks...
jnthn TimToady: Isn't that just a fancy way to get a hash? :-)
TimToady: Also, in this case what about code inside the package?
TimToady a hash of symbols
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)␤»
masak submits rakudobug
jnthn my $x = package { our $y; };
masak ash_: I just did that locally! :)
ash_ lol
masak rakudo: package {}
p6eval rakudo 7d43ee: ( no output )
jnthn TimToady: In the above, is $y a...
masak rakudo: package { ... }
jnthn well, what is it. :-)
p6eval rakudo 7d43ee: ( no output )
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)␤»
masak ooh, two in one!
jnthn Well, same underlying issue
masak how can you tell?
those are two quite different errors. 23:41
jnthn Because I know that Rakudo has no concept of non-our package
We sometimes look like we do
masak rakudo: our $x = package { ... }
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)␤»
jnthn No, that's different.
ash_ i think he means: our package { }
jnthn That's an anonymous package being put into an our variable.
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)␤»
masak rakudo: my $x = our package Foo { ... }
jnthn That should complain that an our-scoped package should have a name, I guess.
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)␤»
masak and that one?
jnthn To clarify what I wrote before
Rakudo has no concept of non-our package or any package not in sink context. 23:43
masak ah.
jnthn class and role do know what to do.
In such cirumstances.
TimToady std: our class FOO {}; GLOBAL::FOO::PARENT::FOO
p6eval std 30454: OUTPUT«ok 00:01 107m␤»
TimToady std: GLOBAL::FOO::PARENT::FOO
p6eval std 30454: OUTPUT«===SORRY!===␤Undeclared name:␤ 'GLOBAL::FOO::PARENT::FOO' used at line 1␤Check failed␤FAILED 00:01 107m␤»
jnthn Ugh. 23:44
masak std: our class PARENT {}; GLOBAL::PARENT
p6eval std 30454: OUTPUT«ok 00:01 107m␤»
masak std: our class PARENT {}; GLOBAL::PARENT::PARENT::PARENT
p6eval std 30454: OUTPUT«ok 00:01 107m␤»
TimToady don't do that :)
masak :)
ash_ so, our means "make a lexical" which references a package with the name of the current package?
TimToady std: GLOBAL::PARENT
p6eval std 30454: OUTPUT«===SORRY!===␤Undeclared name:␤ 'GLOBAL::PARENT' used at line 1␤Check failed␤FAILED 00:01 107m␤»
ash_ and our in the global scope makes variables for GLOBAL
TimToady ash_: except without the name 23:45
23:45 cdarroch left
ash_ yeah, so "our $a" does a GLOBAL::<$a> 23:45
and a lexical $a (assuming your not in another package)
jnthn I'm still trying to work out how on earth to implement things like my $x = package { our $y }
TimToady yes, but the compiler, at the point it's processing 'our', doesn't care whether there's a name or not
jnthn TimToady: In
TimToady it just knows the $*CURPKG as a ref 23:46
jnthn my @x; for 1..5 { @x.push(package { our $x }) }
1 package of 5?
ash_ ah, got ya, i am not keeping track of a $*CURPKG
jnthn *or
ash_ i'd guess 5 anonymous packages 23:47
(personally)
masak too
jnthn guesses 5 too
Just want to be sure that it is as hellish to implement as I expect. :-)
(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.)
ash_ how would you access $x? @x[0]::<$x> to access $x?
masak you mean you'd prefer to detect when two arbitrary packages were equivalent? :P
TimToady well, you make separate subs for 'sub {...}'
jnthn TimToady: Yeah, it's what I'd expect.
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
Almost certainly it's post-R*, anyways.
Stuff we don't support doesn't stop us being a subset. :-) 23:49
23:49 hercynium left
ash_ can you assign a package to a variables? like alias Foo::bar::long::name as blah or to $blah ? 23:49
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:51
so Int is a type object, but Int:: is the package associated with Int 23:52
jnthn TimToady: Alternatively, use Foo.WHO ?
TimToady and it is a hash, as jnthn++ points out
masak goes to bed
jnthn That is, Foo:: is a nicer way to write Foo.WHO ?
masak 'night, #perl6
jnthn o/ masak
TimToady so Int::<xxx> would look for Int::xxx
23:52 masak left
TimToady WHO is intended more for the exact pedigree of a module, really 23:52
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)␤»
jnthn Dalmatian! Terrier!
ash_ std: class Foo { ... }; my $x = Foo::; my $y = $x.new;
p6eval std 30454: OUTPUT«ok 00:01 108m␤»
ash_ so, $y in that example would have a Foo.new?
TimToady more like Spot the 3rd, son of Spot and Missy 23:54
unless it was really Fido
ash_: no, that'd probably be a Stash.new 23:55
ash_ hmm
why a new stash?
TimToady because you said .new
and $x contains something whose .WHAT is Stash 23:56
sorear -> backlog
TimToady sighs, because he's still about 24 hours behind...
ash_ okay, so, if you did module Foo { sub bar { "Foo::bar" }; }; my $x = Foo::; say $x::<bar>; # prints "Foo::bar" ? 23:57
TimToady std: module Foo { sub bar { "Foo::bar" }; }; my $x = Foo::; say $x::<bar>; 23:58
p6eval std 30454: OUTPUT«ok 00:01 111m␤»
TimToady hmm, that should really fail to compile
I wonder how it parsed 23:59