perl6-projects.org/ | nopaste: sial.org/pbot/perl6 | evalbot: 'perl6: say 3;' | irclog: irc.pugscode.org/
Set by mncharity on 25 March 2009.
00:00 kimtaro left 00:04 wknight8111 left 00:06 PhatEddy joined
PhatEddy cspenser: w. regard to prefix ops - I don't really know the area much but poking around a bit I noticed that t/spec/S06-operator-overloading/sub.t might be relevant/ helpful 00:08
00:12 brunoV left 00:13 davidad joined 00:15 justatheory left
pmichaud cspencer: yes, I think that overloading Num is the standard mechanism for numification. (Haven't seen anything official on that, but it's consistent with using Str for stringification) 00:18
cspencer is that implemented at the moment? 00:19
pmichaud I don't think it is.
cspencer i was having issues getting it working
pmichaud I could probably work on it a bit, though.
cspencer well, that'd explain it then :)
pmichaud I think that Str overloading is implemented, but I don't think num overloading it.
*is
there's also a question about how that plays with Int
i.e., if I overload Num, should that affect .int ? (Is there still a .int?) 00:20
and do we have both .int and .Int?
cspencer would it be done similar to the Str implementation?
if you point me to where the Str is implemented, i wouldn't mind taking a crack at it myself :)
pmichaud I think possibly yes, with the exception of resolving the num/int issues.
cspencer ah ok 00:21
pmichaud The Str stuff is implemented in src/classes/Object.pir, I think.
Look specifically for get_string
( :vtable('get_string'), likely)
cspencer will do, thank you :) 00:22
that's looks straight forward enough 00:23
i imagine you'd prefer clarification on the int issue before implementing it though?
pmichaud try implementing get_number and let's see what fails (if anything) 00:24
cspencer sure
pmichaud oh, there must be some other piece to the puzzle, though.
hm.
cspencer how's that? 00:25
pmichaud hmmm, maybe not.
I'm not sure what keeps Str (Perl6Str) from getting the incorrect .Str call
00:25 brunoV joined
pmichaud anyway, try it and let's see what breaks. :-) 00:26
or if it even works :-)
cspencer sure, i'll let you know :) 00:27
00:32 dKingston left
cspencer it does what it was supposed to in a superficial example, running the spectests right now 00:32
pmichaud excellent.
00:43 Cybera joined, iblechbot_ left 00:46 eisgang joined 00:50 dKingston joined 00:55 eisgang left, eisgang joined 01:04 eternaleye joined 01:08 Tene_ joined
cspencer pmichaud: all the spec tests seems to have passed 01:08
01:17 Cybera is now known as Cybera_away 01:24 eisgang left 01:25 Tene left 01:34 cognominal left 02:01 hercynium joined, alester joined
cspencer pmichaud: i've sent in the numification patch 02:17
pmichaud cspencer: excellent! I should be applying patches a bit later.
s1n frioux|home: around 02:20
02:23 PhatEddy left 02:28 sri_kraih left 02:29 Limbic_Region left 02:39 davidad1 joined, davidad left
s1n what the heck does this rakudo error mean: 02:40
Null PMC access in can()
rakudo: use v6; package Foo { class Bar { method baz { say "baz"; } }; Bar.baz; } 02:42
p6eval rakudo e5f4a3: OUTPUTĀ«Null PMC access in can()ā¤current instr.: '!dispatch_method' pc 16868 (src/builtins/guts.pir:104)ā¤Ā»
pugs_svn r26043 | pmichaud++ | [t/spec]: Update some quotes in S05-mass/properties.t .
s1n rakudo: use v6; package Foo { class Bar { method baz { say "baz"; } }; Foo::Bar.baz; } 02:43
p6eval rakudo e5f4a3: OUTPUTĀ«Null PMC access in getprop()ā¤current instr.: 'parrot;P6object;HOW' pc 60 (runtime/parrot/library/P6object.pir:100)ā¤Ā»
s1n rakudo: use v6; package Foo { class Bar { method baz { say "baz"; } } }; Foo::Bar.baz; 02:44
p6eval rakudo e5f4a3: OUTPUTĀ«bazā¤Ā»
pmichaud rakudo doesn't always understand nested namespaces yet.
s1n rakudo: use v6; package Foo { class Bar { method baz { say "baz"; }; self.baz; } } 02:45
p6eval rakudo e5f4a3: OUTPUTĀ«Lexical 'self' not foundā¤current instr.: 'parrot;Foo;Bar;_block23' pc 124 (EVAL_19:62)ā¤Ā»
s1n pmichaud: ahh okay
so should i keep my namespaces flat for now or what?
pmichaud that'd be my guess, until someone has time to work on namespace issues.
s1n it works outside of the package just fine, but within the package/module definition it has trouble 02:47
02:48 justatheory joined 03:09 hercynium left 03:13 awwaiid joined 03:14 dKingston left
awwaiid How do I make rakudo dump a parse tree? I've been able to get pir with --target=pir 03:18
or a PAST would be fine too 03:19
cspencer --target=PAST should do that, i think? 03:21
awwaiid I tried that but didn't get any output. I was also using -e... I'll try with a file
03:22 kjwcode joined
awwaiid ah, that did it! 03:22
03:23 kjwcode left 03:30 justatheory left
PerlJam rakudo: "a:b:c:d".split(/:/,2).join(" ").say 03:32
p6eval rakudo e5f4a3: OUTPUTĀ«perl6regex parse error: Quantifier follows nothing in regex at offset 17, found ':'ā¤current instr.: 'parrot;PGE;Perl6Regex;parse_error' pc 10253 (compilers/pge/PGE/Perl6Regex.pir:1219)ā¤Ā»
PerlJam rakudo: "a:b:c:d".split(/\:/,2).join(" ").say
p6eval rakudo e5f4a3: OUTPUTĀ«a b:c:dā¤Ā»
PerlJam rakudo: "a:b:c:d".split(/\:/,1).join(" ").say
p6eval rakudo e5f4a3: OUTPUTĀ«a:b:c:dā¤Ā»
03:32 alc joined
PerlJam rakudo: "a:b:c:d".split(/\:/,0).join(" ").say 03:32
p6eval rakudo e5f4a3: OUTPUTĀ«ā¤Ā»
PerlJam rakudo: "a:b:c:d".split(/\:/,-1).join(" ").say 03:33
p6eval rakudo e5f4a3: OUTPUTĀ«ā¤Ā»
PerlJam Where's the spec for split?
03:35 meppuru joined
bacek_ PerlJam: S32? 03:36
cspencer rakudo: say ~(0.. ^10) 03:37
p6eval rakudo e5f4a3: OUTPUTĀ«0 1 2 3 4 5 6 7 8 9 10ā¤Ā»
03:41 lambdabot left 03:43 lambdabot joined 03:50 meppl left 03:51 Alias joined 03:52 mikehh left
pmichaud rakudo: say "\c[SMILE]" 03:52
p6eval rakudo e5f4a3: OUTPUTĀ«say requires an argument at line 1, near " \"\\c[SMILE"ā¤ā¤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)ā¤Ā» 03:53
03:56 bacek_ left, Grrrr left, Matt-W left, krunen left, integral left, r0bby left, Woody4286 left, jnthn left, Maghnus left, buu left, c9s left, ingy left, Maddingue left, simcop2387 left, rafl left, cspencer left, Patterner left, plu left, lumi left, dukeleto left, PZt left, meteorja1 left, kst left, charsbar left, Caelum left, PacoLinux left
dalek kudo: 4d74d0c | pmichaud++ | (2 files):
Add initial support for \cC and \c[UNICODE CHAR NAME].
03:57
kudo: 64e33af | pmichaud++ | build/PARROT_REVISION:
Another bump of PARROT_REVISION to get Parrot/PGE bugfixes.
03:57 jnthn joined, bubaflub joined, cspencer joined, Woody4286 joined, Patterner joined, Maghnus joined, PZt joined, c9s joined, dukeleto joined, lumi joined, meteorja1 joined, Maddingue joined, simcop2387 joined, PacoLinux joined, kst joined, Caelum joined, charsbar joined, rafl joined, buu joined, plu joined, ingy joined, irc.freenode.net sets mode: +o jnthn, bacek_ joined, Grrrr joined, r0bby joined, krunen joined, integral joined, Matt-W joined
pmichaud rakudo: say 'hello'; 04:01
p6eval rakudo e5f4a3: OUTPUTĀ«./perl6: error while loading shared libraries: libparrot.so.1.0.0: cannot open shared object file: No such file or directoryā¤Ā»
04:01 alester left
pmichaud rakudo: die "while loading shared libraries"; 04:01
p6eval rakudo e5f4a3: OUTPUTĀ«./perl6: error while loading shared libraries: libparrot.so.1.0.0: cannot open shared object file: No such file or directoryā¤Ā»
04:03 cognominal joined
pmichaud rakudo: say 'hello'; 04:07
p6eval rakudo e5f4a3: OUTPUTĀ«sh: ./perl6: No such file or directoryā¤Ā»
PerlJam pm: so, if I have ICU installed, and I pull the latest rakudo, I can use \c[FOO] from rakudo? 04:09
pmichaud that's the theory.
it's working on my box :-) 04:10
PerlJam installs ICU and tries it out
Is there a way to force a parrot rebuild from rakudo's config? 04:12
PerlJam guesses not
bubaflub hello y'all. i'm looking to get started hacking on rakudo. could someone help me out? 04:14
PerlJam bubaflub: are you a college student?
bubaflub PerlJam: i'm a grad student
PerlJam bubaflub: Have you considered applying to the Google Summer of Code to hack on rakudo? :) 04:15
pm: works on my box too oddly enough :-) 04:16
pmichaud I've got a few more commits/fixes to make.
bubaflub PerlJam: actually, yes. i emailed someone about it, and after talking with them i decided to apply. i think my application would look pretty good if it had some functioning code attached to it...
PerlJam: i was thinking about doing some Math:: stuff. my undergrad was in Math & Computer Science with a focus on numerical analysis and number theory / cryptography. 04:17
PerlJam bubaflub: heh, it was me you emailed about it :)
bubaflub PerlJam: bahahahah
PerlJam: well, i git clone'd rakudo, got everything compiled and up and running. 04:18
04:18 wayland76 joined
PerlJam bubaflub: So what, specifically, do you need help with? 04:20
bubaflub: and send in that gsoc application :) Make sure you follow the template from www.perlfoundation.org/perl5/index....l_template 04:21
wayland76 dataweaver++ (Jon Lang, for S08 work) 04:22
(But that will be reversed if we don't see a commit to the repo :) ) 04:23
bubaflub PerlJam: well, i guess just some high-level overview stuff. i'm swimming in documentation right now. what exactly would i have to do to implement a simple math function, like greatest common denominator? 04:25
pmichaud sub gcd($x, $y) { ... } # maybe a good start? 04:26
04:26 mikehh joined
PerlJam bubaflub: learn perl6 and edit src/setting/Any-num.pm with your subroutine. 04:27
cspencer is there an Any.gcd() method? 04:28
PerlJam cspencer: there can be :)
wayland76 Shouldn't it be on Numeric or something instead? 04:29
pmichaud "34".gcd(46) # valid?
PerlJam wayland76: I don't know .... what pmichaud just said.
wayland76 Ok, good point :) 04:30
Anyway, gcd is not specced :)
bubaflub so is there a low-hanging fruit of a function that is specced that i can work on? 04:31
or am i boldly going where no wo/man has gone before?
04:32 dalek left, dalek joined
wayland76 I don't have a functioning rakudo at the moment, but the relevant spec for numeric stuff is S32-setting-library/Numeric.pod 04:32
awwaiid ah! reading the compiler_overview.pod doc I didn't realize that PAST _is_ the final output of rakudo and the input to parrot. I kept looking for the step after PAST in the doc
wayland76 OTOH, it looks like the GSOC stuff is non-core, and thus not specced 04:33
pmichaud awwaiid: the Parrot Compiler Toolkit takes care of going the rest of the way to PIR and bytecode.
awwaiid since compiler_overview.pod just says "... into the equivalent abstract syntax tree (PAST) representation..." not mentioning what the P in PAST is for :)
04:34 Alias left
pmichaud awwaiid: a patch to improve that text would be very welcome. :-) 04:35
awwaiid ok
meppuru good night 04:36
wayland76 meppuru: 'night 04:38
meppuru ;) 04:39
04:39 meppuru left
PerlJam bubaflub: to get your feet wet, you could just implement some math functions that you think are useful and then submit them as patches. They may or may not be used, but the point would be to get some experience and some feedback 04:40
bubaflub PerlJam: yeah. gsoc or not, i'd love to do some real guts development. i'm looking at the Numeric.pod spec stuff right now.
PerlJam bubaflub: if you got a commit bit to the pugs repository you could patch the spec to include your functions too ;) 04:41
04:41 amoc left
bubaflub PerlJam: there is no GCD method, maybe I'll pick something from this spec that isn't implemented yet. voting is now open for favorite functions... 04:42
wayland76 I'd love to have information on which numeric types inherit from which other ones.
rakudo: true.succ 04:43
p6eval rakudo 64e33a: OUTPUTĀ«Method 'succ' not found for invocant of class 'Failure'ā¤current instr.: 'parrot;P6metaclass;dispatch' pc 637 (src/classes/ClassHOW.pir:161)ā¤Ā»
PerlJam I wouldn't mind seeing gcd and lcm added :)
wayland76 rakudo: my Bool $t; $t = true; $t.succ;
p6eval rakudo 64e33a: OUTPUTĀ«Statement not terminated properly at line 1, near "= true; $t"ā¤ā¤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)ā¤Ā»
bubaflub PerlJam: right on, i'll whip up a quick script to do it.
wayland76 rakudo: my Bool $t; $t = True; $t.succ; 04:44
p6eval rakudo 64e33a: OUTPUTĀ«Type mismatch in assignment.ā¤current instr.: 'die' pc 15621 (src/builtins/control.pir:204)ā¤Ā»
wayland76 rakudo: my Bool $t; $t = 1; $t.succ;
PerlJam bubaflub: but submit that gsoc proposal! :) there's time for "bonding" later.
p6eval rakudo 64e33a: OUTPUTĀ«Type mismatch in assignment.ā¤current instr.: 'die' pc 15621 (src/builtins/control.pir:204)ā¤Ā»
bubaflub roger that. 04:45
wayland76 rakudo: my Bool $t; $t = 1; print $t.succ;
p6eval rakudo 64e33a: OUTPUTĀ«Type mismatch in assignment.ā¤current instr.: 'die' pc 15621 (src/builtins/control.pir:204)ā¤Ā»
wayland76 rakudo: my Bool $t; $t = True; print $t.succ;
p6eval rakudo 64e33a: OUTPUTĀ«Type mismatch in assignment.ā¤current instr.: 'die' pc 15621 (src/builtins/control.pir:204)ā¤Ā»
wayland76 rakudo: my Bool $t; $t = (1 == 1); print $t.succ;
p6eval rakudo 64e33a: OUTPUTĀ«Null PMC access in isa()ā¤current instr.: 'parrot;List;!flatten' pc 5960 (src/classes/List.pir:227)ā¤Ā»
04:46 cognominal_ joined
wayland76 hmm. rakudobug? 04:46
rakudo: my Bool $t; $t = (1 == 1);
p6eval rakudo 64e33a: ( no output )
wayland76 rakudo: my Bool $t; $t = (1 == 1); $t
p6eval rakudo 64e33a: ( no output )
wayland76 rakudo: my Bool $t; $t = (1 == 1); print $.perl
p6eval rakudo 64e33a: OUTPUTĀ«Lexical 'self' not foundā¤current instr.: '_block14' pc 103 (EVAL_17:51)ā¤Ā»
wayland76 rakudo: my Bool $t; $t = (1 == 1); print $t.perl
p6eval rakudo 64e33a: OUTPUTĀ«Bool::TrueĀ»
wayland76 rakudo: my Bool $t; $t = Bool::True; print $t.perl
p6eval rakudo 64e33a: OUTPUTĀ«Bool::TrueĀ»
wayland76 rakudo: my Bool $t; $t = Bool::True; print $t.pick
p6eval rakudo 64e33a: OUTPUTĀ«0Ā»
wayland76 rakudo: my Bool $t; $t = Bool::True; print $t.succ 04:47
p6eval rakudo 64e33a: OUTPUTĀ«Null PMC access in isa()ā¤current instr.: 'parrot;List;!flatten' pc 5960 (src/classes/List.pir:227)ā¤Ā»
wayland76 rakudo: my Bool $t; $t = Bool::True; print $t.aowreign
p6eval rakudo 64e33a: OUTPUTĀ«Method 'aowreign' not found for invocant of class 'Bool'ā¤current instr.: 'parrot;P6metaclass;dispatch' pc 637 (src/classes/ClassHOW.pir:161)ā¤Ā»
wayland76 rakudobug!
pmichaud is .succ defined on True? or is it the generic .succ for enums? 04:48
wayland76 Well, it should be defined on a bool, yes?
At least according to S32 (which admittedly needs some work) 04:49
rakudo: Bool::True.succ
pmichaud In general I take S32 with salt.
p6eval rakudo 64e33a: ( no output )
PerlJam .succ on Bool seems weird.
wayland76 pmichaud: Good idea.
pmichaud well, I know that Bools support postincrement/decrement
so .succ and .pred isn't too far fetched 04:50
but based on that model, I'd expect Bool::True.succ to be Bool::True, and Bool::False.pred to be Bool::False
PerlJam right.
(still seems weird) 04:51
But if programming languages were cities, Perl 6 would be Austin where the motto is "Keep Austin Weird"
wayland76 Hmm. I think I agree there, pmichaud :)
rakudo: print Bool::True++ 04:52
p6eval rakudo 64e33a: OUTPUTĀ«1Ā»
wayland76 rakudo: print Bool::True--
p6eval rakudo 64e33a: OUTPUTĀ«1Ā»
wayland76 rakudo: $t = Bool::True; $t++; print $t.perl
p6eval rakudo 64e33a: OUTPUTĀ«Scope not found for PAST::Var '$t' in ā¤current instr.: 'parrot;PCT;HLLCompiler;panic' pc 146 (src/PCT/HLLCompiler.pir:102)ā¤Ā»
wayland76 rakudo: my $t = Bool::True; $t++; print $t.perl
p6eval rakudo 64e33a: OUTPUTĀ«Bool::TrueĀ»
wayland76 rakudo: my $t = Bool::True; $t--; print $t.perl 04:53
p6eval rakudo 64e33a: OUTPUTĀ«Bool::FalseĀ»
wayland76 There we go :)
Increment and decrement on non-<Str> types are defined in terms of the
C<.succ> and C<.pred> methods on the type of object in the C<Scalar>
container.
(S03)
PerlJam rakudo: my $t = Bool::True; $t--; $t--; say $t.perl
p6eval rakudo 64e33a: OUTPUTĀ«Bool::Falseā¤Ā»
PerlJam just checking
wayland76 So presumably Bool needs a .succ and .pred
pmichaud perhaps, but it could also be that postfix:<++> is overloaded for Bool types. 04:54
wayland76 Hmm. "
If the type does not support these methods, the corresponding increment
or decrement operation will fail.
04:54 cspencer left
wayland76 " 04:54
(More S03)
Btw, pm, you're right about the ++ always returning true 04:56
@karma $t
lambdabot $t has a karma of 0
wayland76 @karma t
lambdabot t has a karma of 0
wayland76 Anyway, I'll submit a bug about that Null PMC unless someone complains soon 04:58
04:58 cognominal left 04:59 cspencer joined
pmichaud We have to redesign rakudo's handling of Bool anyway. 05:00
(yes, bug report would be fine)
wayland76 ok, thanks
Btw, do any of the numeric classes inherit from each other?
(sorry, numeric immutable types) 05:01
pmichaud inherit, no. 05:02
But we have a special rule in place so that Int ~~ Num
wayland76 Ok
pmichaud (i.e., the code is made to think that Int does Num)
wayland76 Does that mean that all the methods on Num can also be used on Int? 05:03
pmichaud are there any methods on Num? ;-) 05:04
wayland76 (in theory?)
Yes, according to S32 :) 05:05
pmichaud example?
wayland76 What I want to know is, if I rewrite S32 to say Int does Num, with a note that implementors are free to optimise this away(?), would that have the same effect?
Well, succ and pred are also on Num, as are floor, ceiling, abs, and some others 05:06
pmichaud I thought that floor, ceiling, and abs are on Any.
'-32'.abs() # valid?
wayland76 That might be a good idea, but it's not what S32 says
pmichaud see my earlier point about S32 and salt. 05:07
wayland76 Yes, but I'm trying to improve S32
hence my constant references to it :)
pmichaud S32 is largely wrong in this respect.
many of the methods that it claims to belong to a specific class actually belong on Any
that's not conjectural -- it's simply a place where S32 wasn't kept up-to-date with decisions being made in the Perl 6 design 05:08
PerlJam wayland76: You could improve it by making sure that any operation that can be done on a number that may have started off life as a string representation of a number, are in Any :)
wayland76 Hmm. If I made a list of all functions grouped into packages, could you tell me which ones belong on Any?
pmichaud it's actually pretty simple
wayland76 ok, I like simple..
pmichaud in general, if I expect to be able to do $x.abs where $x could be any of an int, num, str, array, whatever (i.e., $x is treated in numeric context), the method belongs on Any 05:09
PerlJam is hard pressed to come up with a Num-only example actually
wayland76 Ok, I'll try to remember to rewrite it with that in mind.
PerlJam: I doubt there are any, except on Complex 05:10
pmichaud thus, grep, join, sort, etc are defined on Any and not List or Array
cspencer how does one convert a p6 Int to a Num? 05:11
pmichaud afaict, the design team has thus far been reluctant to make a blanket declaration that the relationship between Int and Num is equivalent to "Int does Num".
part of that is implementation concerns, but I think part of it is also unwanted side effects.
PerlJam pm: I hereby predict that this will be the next thing that changes in the spec (because of the Junction stuff) that will cause a ripple effect throughout the code ;)
wayland76 Fine by me. With your recent notes, the Int does Num stuff is less important in redoing S32 05:12
pmichaud pj: I'm expecting that the junction stuff won't change significantly based on the list discussion.
cspencer so if a method is supposed to return a Num but it ends up returning an Int, that's ok?
pmichaud depends on what we mean by "supposed to return a Num"
cspencer well, if you have a signature that says: our Num multi method foo() { ... } 05:13
PerlJam pm: everytime I think that, Larry shows up with some left-field idea that changes everything. (thus my prediction)
wayland76 Anyway, I've made a note of your ( pmichaud's ) comments. Have to go now &
pmichaud PerlJam: I've seen Larry do that also. But the discussion on Junctions is now in its 3rd or 4th repetition cycle. 05:14
(i.e., we've had these exact discussions before on the list)
PerlJam pm: I know ... I've been ignoring it almost completely (except for spot checking) because it seems like the same arguments over and over again. 05:15
pm: or ... maybe the elimination of want will happen in some way that changes everything :) That's my other prediction. 05:16
pmichaud in that case, I'm thinking that many other changes we've made may be leading to the elimination of want 05:17
i.e., it follows a set of other changes as opposed to precedes them.
PerlJam sleep & 05:20
awwaiid pmichaud, documentation patch submitted 05:24
feedback welcome :) 05:25
pmichaud awwaiid++ # thanks 05:27
05:29 parduncia joined
cspencer pmichaud: did parrot 1.0 get Inf/NaN support for int's? 05:39
pmichaud cspencer: no.
pugs_svn r26044 | pmichaud++ | [t/spec]: Update S05-mass/named-chars.t
r26044 | pmichaud++ | * Semicolon separators in \c[...] should be commas.
r26044 | pmichaud++ | * \c[LINE FEED], \c[FORM FEED], \c[FF], \c[LF] don't appear to be valid
r26044 | pmichaud++ | Unicode char names
r26044 | pmichaud++ | * #?rakudo skip \C, \X in enumerated character classes
pmichaud cspencer: afaik, that's still in the design/review phase
cspencer ok, i thought i'd read it'd been slated for the 1.0 release 05:40
pmichaud Part of me doubts that ints will get Inf/Nan
cspencer it'll be reserved for Integer pmc's instead? 05:41
pmichaud I don't even know if Integer PMCs will get Inf/NaN
cspencer ok :)
pmichaud although if Parrot gets built-in bigint support, then having Integer PMCs get Inf/NaN should work out okay 05:42
cspencer that's the part still getting hashed out, eh?
pmichaud among other things 05:43
05:52 alc left
pugs_svn r26045 | pmichaud++ | [t/spec]: Add some #?rakudo skip for S02-literals/char-by-name.t 06:00
06:08 sri_kraih joined
moritz_ good morning 06:14
dukeleto mornin
pmichaud rakudo: say "\c[SMILE]"; 06:20
p6eval rakudo 64e33a: OUTPUTĀ«āŒ£ā¤Ā»
pmichaud rakudo: say "\c9786"; 06:21
p6eval rakudo 64e33a: OUTPUTĀ«ā˜ŗā¤Ā»
pmichaud rakudo: say "\c[WHITE SMILING FACE]"; 06:22
p6eval rakudo 64e33a: OUTPUTĀ«ā˜ŗā¤Ā»
pmichaud better.
moritz_ rakudo: say "\c[white smiling face]"
p6eval rakudo 64e33a: OUTPUTĀ«ā˜ŗā¤Ā»
moritz_ it's good not to force people to scream ;-)
pmichaud rakudo: say "\c[white star]" 06:23
p6eval rakudo 64e33a: OUTPUTĀ«ā˜†ā¤Ā»
pmichaud rakudo: say "\c[black telephone]"
p6eval rakudo 64e33a: OUTPUTĀ«ā˜Žā¤Ā» 06:24
06:24 brunoV left
moritz_ rakudo: say "\c[blue mountain]" 06:24
pmichaud rakudo: say "\c[umbrella with rain drops]"
p6eval rakudo 64e33a: OUTPUTĀ«perl6regex parse error: Unrecognized character name at offset 8, found 'b'ā¤current instr.: 'parrot;PGE;Perl6Regex;parse_error' pc 10496 (compilers/pge/PGE/Perl6Regex.pir:1309)ā¤Ā»
rakudo 64e33a: OUTPUTĀ«ā˜”ā¤Ā»
bubaflub that's pretty neat; i wasn't aware of the "\c[]" syntax 06:25
pmichaud rakudo: say "\c?".ord
p6eval rakudo 64e33a: OUTPUTĀ«127ā¤Ā»
pmichaud rakudo: say "\c@".ord
p6eval rakudo 64e33a: OUTPUTĀ«0ā¤Ā»
pmichaud rakudo: say "\cJ".ord 06:26
p6eval rakudo 64e33a: OUTPUTĀ«10ā¤Ā»
moritz_ that's a bit more obscure ;-) 06:27
but specced nontheless
pmichaud rakudo: say "\c[72,101,108,108,109]" 06:28
p6eval rakudo 64e33a: OUTPUTĀ«Hellmā¤Ā»
pmichaud oops.
bubaflub haha
pmichaud rakudo: say "\c[WHITE RIGHT POINTING INDEX]"
p6eval rakudo 64e33a: OUTPUTĀ«ā˜žā¤Ā»
pmichaud rakudo: die "\c[SKULL AND CROSSBONES]" 06:29
p6eval rakudo 64e33a: OUTPUTĀ«ā˜ ā¤current instr.: 'die' pc 15621 (src/builtins/control.pir:204)ā¤Ā»
pmichaud just too scary. 06:30
rakudo: say "\c[YIN YANG]"
p6eval rakudo 64e33a: OUTPUTĀ«ā˜Æā¤Ā»
moritz_ rakudo: say "\c[capital letter a with diaresis]" 06:31
p6eval rakudo 64e33a: OUTPUTĀ«perl6regex parse error: Unrecognized character name at offset 8, found 'c'ā¤current instr.: 'parrot;PGE;Perl6Regex;parse_error' pc 10496 (compilers/pge/PGE/Perl6Regex.pir:1309)ā¤Ā»
moritz_ rakudo: say "\c[capital letter a with diaeresis]"
p6eval rakudo 64e33a: OUTPUTĀ«perl6regex parse error: Unrecognized character name at offset 8, found 'c'ā¤current instr.: 'parrot;PGE;Perl6Regex;parse_error' pc 10496 (compilers/pge/PGE/Perl6Regex.pir:1309)ā¤Ā»
moritz_ rakudo: say "\c[latin capital letter a with diaeresis]"
p6eval rakudo 64e33a: OUTPUTĀ«Ć„ā¤Ā»
moritz_ pmichaud: did you add any test files yet? 06:32
pmichaud I have a fix locally that gives a better error message.
moritz_: didn't have to... there are thousands of tests already that depend on this :-)
(which is part of the reason I implemented it)
moritz_ pmichaud: I meant to t/spectest.data ... or are they already in? 06:33
pmichaud I'm spectesting now.
as soon as it's done I'll git push
moritz_ ok, thanks
pmichaud there's a bunch of tests that I'm not quite sure how to deal with, though.
we'll have to get Parrot to expose more unicode information from ICU.
on the plus side, we can now do things like: 06:35
rakudo: say ?("A" ~~ /<[\x40..\x5f]>/)
p6eval rakudo 64e33a: OUTPUTĀ«1ā¤Ā»
cspencer pmichaud: not sure if Range was destined for the setting, but I've just submitted a patch that moves a lot of its functionality from PIR to P6 06:36
pmichaud cspencer: it is destined for setting, yes. But it's also very tricky to get right... and I think the specs are clearly wrong in quite a few places. 06:37
cspencer ok
pmichaud if it passes the spectests it's likely a good start.
cspencer at the moment, it (the p6 version) is passing all of the spectests
pmichaud what's the ticket #?
it hasn't hit my inbox yet, apparently.
cspencer 64370
it's not that old :) 06:38
thought i've noticed a bit of lag from RT -> email lately
my email, at least
pmichaud well, it has to go RT -> perl6-compiler -> recipients
cspencer right, ok :)
i'm off for the evening, if you've got any suggestions, i'd be glad to revise things tomorrow 06:39
pmichaud I'm not sure we should be duplicating the 'has' declarations.
cspencer i'd used the to provide the from/to methods
s/the/them/ 06:40
pmichaud just write the from/to methods explicitly is probably better.
oh, maybe not. hmmm.
I'll have to think about that.
cspencer ok :)
good night!
06:41 cspencer left
pmichaud moritz_: ping 06:45
moritz_ pmichaud: pong 06:46
pmichaud one other item I forgot to mention -- I can add these new tests to spectest.data.... but they require ICU in order to run/pass. 06:47
I suppose I can find a way to do a 'skipall' if ICU isn't present.
moritz_ or we just don't skip and wait until ICU in parrot becomes mandatory 06:48
and document in README that we require it until then
pmichaud according to discussion earlier today, ICU in parrot won't be mandatory until at least August, and possibly as late as December
dalek kudo: 1a618d0 | pmichaud++ | build/PARROT_REVISION:
Bump PARROT_REVISION to handle \c, \x, \o in enumerated character classes
moritz_ oh my.
pmichaud we can make it "mandatory" for Rakudo if we wish, though. 06:49
moritz_ possibly in Configure
maintaining platform dependant skips/todos is a pain 06:50
I'd appreciate it if we didn't get that far :)
pmichaud well, it would just be one at the beginning of the relevant files (only two so far)
and it could even be platform independent
moritz_ actually there are more
in uc.t for example
we currently skip them for rakudo, even though they pass with ICU enabled 06:51
(or they passed last I looked ;)
pmichaud but even for that, it could be:
eval(q< 'Ć³'.uc >) eq 'Ɠ' or skip_rest(....) 06:53
(or otherwise abort processing if we can't do even a simple unicode transformation)
moritz_ well, but who's going to maintain these skips?
pmichaud and that's not really platform-dependent.
moritz_ I can't test them, because all my machines have ICU 06:54
pmichaud (you can build parrot --without-icu :-)
06:54 DemoFreak joined
moritz_ but I don't have to like it, do I? ;-) 06:55
pmichaud no. in fact, you don't even have to do it --I'll do it tomorrow (too tired tonight to reliably do it)
I figure a one-line test like that at the beginning of relevant files is probably maintainable. 06:56
at least, for files that have lots of unicode-related tests, if nothing else.
yes, the longer solution is to require folks to have icu with rakudo. 06:57
moritz_ where's the discussion about why mandatory ICU is delayed for parrot?
pmichaud it was during today's conference call
it basically has to do with parrot deprecation cycles 06:58
making something mandatory that was previously optional really ought to have a deprecation notice
(i.e., we're taking away the ability to do something that was once valid)
moritz_ if it goes in now, it can be enabled right after the april release, no?
pmichaud not in the new-world of parrot 06:59
moritz_ ...
pmichaud deprecation cycles are based on the "supported releases"
moritz_ what a brave new world ...
pmichaud 1.0 (march) was the last supported release
that means that the ability to build without icu needs to remain in place through the next supported release (july) 07:00
so, the first parrot release that could require icu would be august. 07:01
and that will depend on developer tuits (and july/august are always very busy times for the parrot team), so it could be later than that.
anyway, we'll come up with something for rakudo.
moritz_ thought about a big all-caps warning in Configure.pl 07:02
pmichaud The two tests that are ready to be added to spectest are S05-mass/named-chars.t and S02-literals/char-by-name.t
yes, what I really need to do with Configure.pl is to have it check parrot's Configure and see if parrot is being built with icu, and abort w/warning if it's not. (Ideally we would do this _before_ going through a Parrot compilation, though.) 07:03
then have an option to Rakudo's Configure to go ahead and build Rakudo w/o icu if that's what the person wants.
Anyway, it's 02h00 here, so I'm off to bed. I'll look at ICU options in the morning. 07:05
moritz_ good night ;-)
pmichaud (and I should write a blog post about all of this) 07:06
moritz_ aye
speaking of which, I just published my tidings 2009-04 post
pmichaud url?
moritz_ perlgeek.de/blog-en/perl-6/tidings-2009-04.html
pmichaud moritz++ # relevant and useful 07:08
moritz_ thanks. I felt this issue was a bit biased ;-)
pmichaud biased how? towards rakudo?
moritz_ I'm used to that; it's hard to get information about the other implementation 07:09
about selection of what I wrote about, some opinions went into it
pmichaud well, smop also is having to deal with the fact that an underlying premise is changing, requiring some significant rework (meaning other progress might stall). We've had that happen more than a few times with pge and rakudo. 07:10
but even with that, it's okay to be biased in what you think is interesting :-) 07:11
moritz_ ;-)
Matt-W Good morning 07:13
moritz_ hi Matt-W 07:14
Matt-W Lovely morning 07:16
moritz_ indeed it is 07:17
Matt-W I get into work and discover that the network's crapped out
something made my computer reboot overnight
moritz_ sun is shining... ;-)
Matt-W and all the network drives... where my work is... are inaccessible
pmichaud Matt-W: ...conficker? ;-)
Matt-W seems unlikely
they took some fairly radical precautions, but the servers are all solaris boxes
07:18 iblechbot joined
Matt-W And I was all set for some C++ template abuse too 07:18
Matt-W ponders starting again from memory for the time being 07:19
moritz_ there *are* some cool (and evil) uses for templates ;-)
Matt-W yup
bubaflub PerlJam: i've completed my GSoC application. i'm out for tonight.
07:20 bubaflub left
moritz_ for example a linear algebra library that I'm using does "lazy" evaluation and optimization at compile time due to templates 07:20
dalek kudo: eda14fa | (Moritz Lenz)++ | (2 files):
[Configure] use list-form of system() to deal with white spaces in file names
Matt-W moritz_: some of the stuff Boost do with templates terrifies me
moritz_: what I'm doing is trivial baby stuff by comparison
moritz_ Matt-W: same here ;-) 07:21
but I can't publish papers on C++ templates, I have to get results from my numerics first ;-)
Matt-W :)
This is so irritating
I was really looking forward to getting stuck in to this
It's pure data structure design stuff
Don't get to do that very often
Matt-W wonders if he can sneak in the back 07:22
hmm no
the servers just aren't talking
07:23 parduncia left
moritz_ rakudo: say "Ƅ" ~~ / \c[latin capital letter a with diaeresis] / 07:31
p6eval rakudo eda14f: OUTPUTĀ«Ć„ā¤Ā»
dukeleto moriz: no mention of roots() for Complex numbers in perlgeek.de/blog-en/perl-6/tidings-2009-04.html :(
moritz_ dukeleto: I didn't want to emphasize another small sub-project I was involved int 07:32
have to run now, bbl 07:33
dukeleto moritz: understandable
Matt-W Woohoo! Network drives! 07:37
dalek kudo: 685bff1 | (Moritz Lenz)++ | docs/ChangeLog:
[docs] ChangeLog for \c implementation
07:44
07:45 cognominal_ left 08:01 mjk joined 08:06 xinming_ joined 08:18 xinming left 08:19 bacek_ left 08:20 ejs joined 08:27 M_o_C joined 08:38 szabgab left 08:44 bsb joined 08:53 mjk left 09:00 szabgab joined 09:04 cognominal joined 09:11 smtms left, smtms joined 09:17 DemoFreak left 09:19 M_o_C left
jnthn morning 09:23
moritz_ good morning jnthn 09:24
jnthn moritz++ # nice report 09:29
moritz_ thanks
jnthn Actually somehow I'd missed that you'd been writing these. 09:31
moritz_ they apear on planetsix
jnthn 294 tickets!! 09:35
09:42 PZt left 09:47 ashizawa left
bacek good evening 09:49
jnthn evening, bacek 09:51
bacek morning, jnthn :)
moritz_ krunen++ # you're my hero (re: taucs compilation, a few days ago)
09:53 ashizawa joined 09:57 icwiener joined 10:10 M_o_C joined
pugs_svn r26046 | jnthn++ | [t/spec] Tweaks and fudging for Rakudo for S16-filehandles/unlink.t. 10:13
10:16 Maghnus left 10:20 masak joined
masak bacek: so, you hate me sometimes, huh? :) 10:22
I know it's a widespread belief that people who report bugs are somehow also the cause of them... 10:23
bacek masak: of cause! :)
masak ...but it turns out there is not much empirical evidence for this.
also known as "don't shoot the messenger".
moritz_ shoots masak, just for fun 10:25
jnthn OH HAI masak 10:26
masak is flung through the air, lands on bacek
jnthn: can't talk right now, I'm being shot!
jnthn masak: Oh come on, surely that's not a huge distraction?
masak jnthn: so far, it's actually quite OK... 10:27
but I suspect I'm in shock.
bacek masak: hey! I didn't shot you, moritz_did!
masak bacek: it's not my fault that you stood right behind me, though.
bacek: it's as if you were using me as cover. :P 10:28
moritz_ goes to lunch and hopes that masak++ respawns in the mean time
masak I can do that?
10:28 Maghnus joined
masak great! 10:28
bacek spawn??? Rakudo uses threads! 10:29
masak .clone()
wayland76 nonono 10:30
while(1) { $masak.clone(); }
:)
masak even I see problems with that...
let's just say you wouldn't want... hey, don't crowd me!
bacek wayland76: good GC will wipe all clones ASAP.
wayland76 for(1..5) { $clone = $masak.fork($appropriate_person); } 10:31
masak must... open... door...
wayland76 bacek: But won't it keep the clone around when the extra references get deleted?
It'll sort of be like the man who wouldn't die :) 10:32
$whileloop.last() :)
bacek wayland76: class Masak { has @.clones; method clone_me { @.clones.push(self.clone}; @.clones[*-1] }; while (1) { $masak.clone_me() } 10:33
this will work :)
masak oh, can you make while loops end from another thread?
that'd be neat.
wayland76 Not that I know of 10:34
But I figured while I was doing Perl pseudocode, I might as well have a pony :)
masak heh.
masak and all his clones go to lunch
& 10:35
wayland76 "The day the world was eaten!" :)
#perl6: The B-grade movie :)
pugs_svn r26047 | jnthn++ | [t/spec] Add tests for re-binding $*OUT and $*ERR. 10:46
10:58 broquain1 joined, broquain1 left, broquaint joined
masak jnthn: ooh! I thought about rebinding of $*OUT yesterday. :) 10:59
it would do wonders for test mocking.
jnthn masak: $*OUT test is passing locally, commit coming soon. 11:00
masak \o/
jnthn Made an easy start to the day.
Also, we pass half of unlink.t, so fudged and adding to spectest.data.
masak rakudo: say "A"; my $collector; { my $temp = $*OUT; $*OUT = class { method print($s) { $collector ~= $s } }; print "OH HAI"; $*OUT = $temp }; print "B"; print $collector 11:02
p6eval rakudo 685bff: OUTPUTĀ«Aā¤OH HAIĀ» 11:03
masak on my box, that segfaults after the "OH HAI".
jnthn: does it work locally for you? :)
(with the order 'A\nB\nOH HAI", too?) 11:04
jnthn masak: I'd been doing := rather than = (rebinding... ;-)) 11:05
masak oh, ok.
jnthn Wonder if assignment would work too though. Hmm.
masak as long as something works, I'm happy. :)
jnthn (Or if it doesn't, why it wouldn't.) 11:06
dalek kudo: ef59b9d | jnthn++ | t/spectest.data:
Add S16-filehandles/unlink.t to the spectests.
kudo: db0264d | jnthn++ | src/ (3 files):
Make various built-ins that should use $*OUT and $*ERR actually use them.
kudo: 3ad32e1 | jnthn++ | t/spectest.data:
Add S16-unfiled/rebindstdhandles.t to the spectests that we run.
masak rebuilds 11:07
11:15 eiro joined
eiro hello 11:15
11:19 Cybera_away left
masak eiro: greetings. 11:19
rakudo: say <eiro: hello from Rakudo, too!>
p6eval rakudo 3ad32e: OUTPUTĀ«eiro:hellofromRakudo,too!ā¤Ā»
masak rakudo: say <eiro: hello from Rakudo, too!>.fmt('%s')
p6eval rakudo 3ad32e: OUTPUTĀ«eiro: hello from Rakudo, too!ā¤Ā»
masak that's better. 11:20
jnthn has got START working as a term as well as a statement now. 11:23
std: my multi bar() { } 11:30
p6eval std 26047: OUTPUTĀ«ok 00:02 34mā¤Ā»
11:30 M_o_C left 11:34 jferrero joined
eiro masak, thx 11:34
i previously came to this chan (as khatar) 11:35
masak eiro: so, tried Rakudo yet? :)
eiro: aha.
well, welcome back.
eiro i changed my nick (because noone can tell it correctly)
pugs_svn r26048 | jnthn++ | [t/spec] Unskip term:START tests, and s/skip/todo/ for a soft failure. 11:36
eiro masak, yep: i have some little scripts allready in use
masak cool.
eiro basically to replace little perl5 or shell scripts
now i want to write a MARC lib
the perl6 MARC::Record 11:37
(but i want it better ;-) )
masak that's a good goal.
eiro i have a question: is there a way to use a grammar with a filehandle
dalek kudo: 46987f7 | jnthn++ | src/parser/ (2 files):
Implement START term; small refactoring so we can use same code as for START statement.
11:38
11:38 M_o_C joined
eiro i mean: i want to find marc records in a open file (say $marcdump) 11:38
jnthn .parsefile takes a filename, .parse takes a string...so I guess nothing takes a filehandle directly.
eiro but i don't want to read all the file
parsefile!
perfect! and it reads only required data ? 11:39
jnthn eiro: At the moment, I believe it reads the lot. :-(
eiro: However, I hope we will be able to optimize that in the future.
eiro jnthn, but it will change :)
masak jnthn: couldn't .parsefile have a multi variant that took a fh?
jnthn masak: Perhaps. ;-)
11:39 cognominal left
eiro i mean: the expected way is: read only needed tada 11:39
11:40 pjcj joined
masak come to think of it, maybe open() should, too... 11:40
jnthn Sure. And it may well turn out that some refactors that are on the way in the not too distant future may let us do that...
(Cursor stuff that I think pmichaud will be working on in the not too distant future...)
eiro parsefilehandle coould be cool to write a protocol handler
jnthn Aye, true. 11:41
11:44 cognominal joined
diakopter rakudo: warn 11:53
p6eval rakudo 46987f: OUTPUTĀ«Warning! Something's wrongā¤ā¤Ā»
diakopter smiles
rakudo: warn !!!
p6eval rakudo 46987f: OUTPUTĀ«Syntax error at line 1, near "!!!"ā¤ā¤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)ā¤Ā»
diakopter rakudo: warn ???
p6eval rakudo 46987f: OUTPUTĀ«Statement not terminated properly at line 1, near "???"ā¤ā¤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)ā¤Ā»
diakopter rakudo: warn ...
p6eval rakudo 46987f: OUTPUTĀ«No exception handler and no messageā¤current instr.: 'return' pc 15298 (src/builtins/control.pir:39)ā¤Ā»
eiro oops .. i can't use my grammar with a filter as i can't use $grammar.parsefile($*STDIN); 11:55
right ?
jnthn Right.
It's spent $*IN, but you still can't.
In fact, that makes me think we really do need a third variant that takes a file handle... 11:56
eiro oops ... too many perl5 habits
jnthn :-)
11:57 dac524 joined
eiro sure! we baddly need it ( for sockets, filters and fun ) 11:57
(filters: the unix way)
11:58 dac524 left
jnthn Aye, you've sold me on it (but I'm implementor, not designer ;-)) 11:58
dalek kudo: d981bae | (Carl Masak)++ | src/builtins/control.pir:
tidied up default warning message slightly
kudo: 4c2f0ce | (Carl Masak)++ | :
Merge branch 'master' of [email@hidden.address]
masak note to self: always Do It In a Branch. 11:59
even when it's Just One Commit. :)
jnthn rakudo: my $x = 42; role Foo { method x { say $x } }; Foo.new.x 12:00
p6eval rakudo 46987f: OUTPUTĀ«Lexical '$x' not foundā¤current instr.: 'parrot;Foo[];x' pc 260 (EVAL_20:105)ā¤Ā»
jnthn Hmpfh
bacek masak: do "git pull --rebase" just before pushing 12:05
masak bacek: ooh! thanks for the tip.
bacek git is something like Perl6 in VCSs. There is many ways to shot your foot :) 12:06
rgs that's probably why the python guys switch to mercurial. 12:07
masak I've already been shot today. no need for special treatment of the feet.
bacek rgs: indeed. 12:08
masak rgs: aye, but I agree with chromatic: that Perl-as-line-noise was kind of a low blow.
bacek just finishing watching www.youtube.com/watch?v=JzIWdJVP-wo
incredible talk by TimToady at Google
jnthn Ah. 12:10
jnthn just found a wrong spectest, it seems.
my sub foo(*@args, *%named) { 1 } 12:11
eval_lives_ok q/foo; /, 'call with no args, no parens';
That won't work out.
Because the code is eval'd in Test.pm
And thus in its lexical scope.
And not the lexical scope of the test, where the sub foo is defined.
masak huh.
jnthn I just discovered this after implementing lexical subs... ;-) 12:12
masak so maybe eval_lives_ok shouldn't be used here.
jnthn Well, maybe a lexical sub shouldn't be used too. ;-)
masak right.
I've signed up as a mentor for GSoC. can I send student applications, too? 12:14
12:15 M_o_C left, M_o_C joined 12:16 meppl joined
masak ah, seems not. code.google.com/opensource/gsoc/200...nd_student 12:17
jnthn eats lunch while his latest tweaks to lexical subs smoke 12:22
12:31 skids left
moritz_ masak: if you resign as a mentor, you can 12:31
masak moritz_: I guess. but I don't want to resign as a mentor.
it seems that I'll get to mentor two wonderful projects. 12:32
turning those down doesn't feel like an option.
moritz_ which two?
literal's I know
masak moritz_: a guy has contacted me about November. he wants to implement widget plugins. 12:33
moritz_ masak: nice 12:35
masak aye, I'm happy about that.
moritz_ how many projects had we funded last year?
masak I lost count somewhere in January. :)
moritz_ there was Auzon's, tewk's, Math::GSL bindings, another parrot project 12:36
a bricolage project whose student never appeared
and a graphical CPAN frontend
would be 6
12:37 ruoso joined
moritz_ there are already at least 5 very fine proposals submitted that I'd like to see funded 12:38
ruoso Hi!
masak ruoso: oh hai
ruoso I've been spamming around to see if we get more proposals 12:39
moritz_ that would be great
because then we'd get more slots
last year we had around 12 or 14 applications 12:40
masak make sure to hint at how great it is to write Perl 6 code for money. 12:41
that's why I wouldn't mind writing tests all summer, like Auzon did. :) 12:42
Auzon++ 12:43
moritz_ ah, but writing something that actually runs and does something cool is even more satisfactory
masak I guess, yes.
I plan to feed on literal's satisfaction from writing psi. :) 12:44
ruoso I've already commented with him... psi is already the name of a widely known XMPP client
pugs_svn r26049 | jnthn++ | [t/spec] Correct a test that wrongly assumed lexicals used in an eval are in the scope of the place where the eval string is constructed, not in that where eval is called.
ruoso I'd use a different name
masak ruoso: that's fine with me. 12:45
although keeping the name is fine too. it wouldn't be the first time two different things shared a name.
pugs_svn r26050 | jnthn++ | [t/spec] Unfudge a couple of tests for lexical subs for Rakudo.
wayland76 Just for the record, Melbourne-PM had a notice about GSoC on their mailing list 12:47
dalek kudo: 8bd87bb | jnthn++ | src/parser/actions.pm:
Implement lexical subs for the non-multi case.
12:48
kudo: 8eb5225 | jnthn++ | :
Merge branch 'master' of [email@hidden.address]
kudo: c40f3b9 | jnthn++ | src/parser/actions.pm:
Corret mistake in anonymising lexical subs.
wayland76 Btw, in regards to using grammars and filehandles together, I'm thinking the other component for a really wonderful protocol handler is the Event Handling stuff that has been proposed in the very-drafty S17 :)
12:49 M_o_C left
masak jnthn: ohandIshouldremindyouaboutthe'new'methodthingincaseyouseemedtohaveforgotten. 12:51
maybe I should submit a rakudobug about it? :) 12:52
jnthn is glad English has spaces...
masak: Did you not find a way to make it work?
masak now that you mention it, maybe I did... 12:53
masak checks the logs
moritz_ I did :-)
more or less
masak ah: irclog.perlgeek.de/perl6/2009-03-31#i_1028989 12:54
moritz_ rakudo: class A { has $!a; method new($x) { self.bless(a => $x) } }; A.new(4).WHAT.say
p6eval rakudo c40f3b: OUTPUTĀ«Aā¤Ā»
moritz_ rakudo: class A { has $.a; method new($x) { self.bless(a => $x) } }; A.new(4).a.say
p6eval rakudo c40f3b: OUTPUTĀ«4ā¤Ā»
masak ok, that enables a few improvements to Druid and Web.pm... :) 12:55
12:55 M_o_C joined 12:56 M_o_C left 12:58 M_o_C joined, cognominal left
literal I don't mind changing psi's name as long as we find something that's short and sweet 12:58
terseness++
moritz_ isp 12:59
oh no, that's taken as well ;-)
p6s
"Perl 6 Show"
ipd, interactive perl doc
literal or pdoc 13:00
jnthn 6doc
literal maybe too similar to perldoc
moritz_ literal: pdoc is already taken
literal oh
moritz_ literal: pdoc.sourceforge.net
masak rakudo: class A { submethod BUILD($a: $b, $c) {} }; A.new # what am I doing wrong?
p6eval rakudo c40f3b: OUTPUTĀ«too few arguments passed (2) - 3 params expectedā¤current instr.: 'parrot;A;BUILD' pc 110 (EVAL_19:59)ā¤Ā»
masak 6i? 13:01
moritz_ masak: what the error message says ;-)
masak: the invocant is the class, the first positional is the object being constructed
masak moritz_: that does not explain it to me.
moritz_ where should the third come from?
masak remove one param? 13:02
moritz_ yes
masak ah.
moritz_ attributes are handled by named parameters
literal pid ? (your ipd spelled differently)
masak moritz_: thanks.
moritz_ literal: pid = process identifier
literal yeah, but there's no pid(1) yet though, is there?
masak pux? "Perl Userdocs eXplainer" 13:03
moritz_ likes pux
literal or pud, Perl user documentation
masak moritz_: might want to work on the explansion, though.
s/l//
wayland76 I'm trying to work out how we can name it Pux of Pooks Hill :)
masak wayland76: :) 13:04
literal pud is also only one letter away from Pod :P
moritz_ or maybe we shouldn't look for abbreviates, but for the name of a character the explains Perl 6 to you
wayland76 Pud is also slang for penis
literal wayland76: I was unaware of that
13:04 M_o_C left
moritz_ "Fee explains Perl 6" (Fee is German for fairy as well) 13:05
or any other nice name
wayland76 I figured, but I thought it was probably a good idea to mention it
We have a cognate "fay"
masak moritz_: I think we should go for an orange dog or a paperclip.
moritz_ masak: point taken :/
masak what could possibly go wrong?
wayland76 "It looks like you are writing a suicide note. Would you like some help with this?" 13:06
Ooh, we can name the pux section about OO programming "poox" 13:08
literal "see" maybe? that's straightforward
wayland76 grok?
masak likes grok 13:09
wayland76 www.onnoot.com/uploaded/images/word...e-note.jpg
literal grok is nice
wayland76 It's taken
It's a web framework
masak rakudo: class A { has $.foo; submethod BUILD($obj) { $obj.foo = 7 } }; A.new # is there a way to set $!foo in $obj in the BUILD without making $.foo rw?
p6eval rakudo c40f3b: OUTPUTĀ«Cannot assign to readonly variable.ā¤current instr.: 'die' pc 15631 (src/builtins/control.pir:204)ā¤Ā»
literal wayland76: I'd say that's different enough to not cause much of a conflict... 13:10
wayland76 package naming?
masak wayland76: perl6-grok
wayland76 ok
But it means I'll have no opportunity to write pux poox :) 13:11
masak literal: feel free to update u4x/README, if you like.
literal ok
masak anyway, about my question above: is there? 13:12
ruoso what's wrong with the simple ideas like p6d? 13:13
or p6doc 13:14
masak ruoso: nothing, really. but 'grok' has personality.
doesn't BUILD have access to private attributes? if not, where would be the proper place to initialize private attributes? 13:15
wayland76 Hmm. Having said all that, I like the idea of the name starting with P 13:16
ruoso masak, yes... BUILD has access to private attributes 13:17
masak ruoso: how? could you show me?
ruoso rakudo: class A { has $.foo; submethod BUILD($obj) { $!foo = 7 } }; say A.new.foo; 13:18
p6eval rakudo c40f3b: OUTPUTĀ«Null PMC access in getprop()ā¤current instr.: 'infix:=' pc 13871 (src/builtins/assign.pir:21)ā¤Ā»
masak submits rakudobug
ruoso: also, how would that affect $obj?
ruoso ah 13:19
sorry
rakudo: class A { has $.foo; submethod BUILD($obj) { $obj!foo = 7 } }; say A.new.foo;
p6eval rakudo c40f3b: OUTPUTĀ«Could not locate a method '!foo' to invoke on class 'A'.ā¤current instr.: 'die' pc 15631 (src/builtins/control.pir:204)ā¤Ā»
masak not implemented yet.
jnthn I don't think $obj!foo would ever work like that... 13:20
masak that's what I suspected as well.
why would it?
13:20 hexmode joined
masak BUILD is just a 'normal' submethod. 13:20
jnthn (Since $!foo is a storage location, and $obj!foo is trying to call a private method foo)
masak oh, and that too.
jnthn However, using $!foo in BUILD should not fail like that.
That is the real bug.
masak aye.
but my original question remains unanswered. 13:21
jnthn If BUILD is the right place to do that?
masak I don't know.
if it isn't, what is the right place? 13:22
I mean, something somewhere has to have access to those private attributes...
rakudo: class A { has $.a; method foo { self.bar }; submethod bar { $!a = 7 } }; A.new.foo 13:24
p6eval rakudo c40f3b: ( no output )
masak something specifically to do with BUILD, then.
(the Null PMC Access above)
jnthn masak: Yes, I have a good idea what that is. 13:25
ruoso masak, jnthn, in fact... TimToady had said that the build signature receives the object as the invocant....
not as a second positional argument
masak ruoso: that kinda helps :)
masak submits a rakudobug about that too
ruoso which would mean that BUILDALL would invoke BUILD like $obj.($class)::BUILD(%initializers) 13:26
std: my $obj; my $class; $obj.($class)::BUILD()
p6eval std 26050: OUTPUTĀ«##### PARSE FAILED #####ā¤Syntax error (two terms in a row?) at /tmp/1XR2Kib8aZ line 1:ā¤------> my $obj; my $class; $obj.($class)::BUILD()ā¤ expecting any of:ā¤ POSTā¤ infix or meta-infixā¤ infix stopperā¤ postfixā¤ postfix_prefix_meta_operatorā¤
.. standard stopperā¤ statem...
ruoso hmm...
there's some way of doing it...
std: my $obj; my $class; $obj.::($class)::BUILD() 13:27
p6eval std 26050: OUTPUTĀ«ok 00:02 35mā¤Ā»
13:30 skids joined 13:32 icwiener left 13:33 icwiener joined 13:35 grwi joined, grwi left
ruoso rakudo: class A { submethod foo { say 1 } }; class B is A { submethod foo { say 2 } }; my $b = B.new; A.HOW.dispatch($b,'foo',()); 13:39
p6eval rakudo c40f3b: OUTPUTĀ«too many arguments passed (3) - 1 params expectedā¤current instr.: 'parrot;A;foo' pc 173 (EVAL_20:69)ā¤Ā» 13:40
ruoso rakudo: class A { submethod foo { say 1 } }; class B is A { submethod foo { say 2 } }; my $b = B.new; A.HOW.dispatch($b,'foo',\());
p6eval rakudo c40f3b: OUTPUTĀ«too many arguments passed (3) - 1 params expectedā¤current instr.: 'parrot;A;foo' pc 184 (EVAL_21:70)ā¤Ā»
ruoso rakudo: class A { submethod foo { say 1 } }; class B is A { submethod foo { say 2 } }; my $b = B.new; A.HOW.dispatch($b,'foo',\($b: ));
p6eval rakudo c40f3b: OUTPUTĀ«Statement not terminated properly at line 1, near ": ));"ā¤ā¤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)ā¤Ā»
jnthn try A.HOW.dispatch($b,'foo')
ruoso rakudo: class A { submethod foo { say 1 } }; class B is A { submethod foo { say 2 } }; my $b = B.new; A.HOW.dispatch($b,'foo'); 13:41
p6eval rakudo c40f3b: OUTPUTĀ«1ā¤Ā»
ruoso hmm... where does the capture go?
jnthn (Not actually taking a capture there yet)
ruoso ah... ok...
jnthn, btw... that should be a clean way of invoking BUILD correctly 13:42
jnthn erm. And why is it calling 1 and not 2 there...
oh
A.HOW...
Nice. :_)
masak indeed. 13:43
ruoso certainly cleaner than $b.::($variable_with_protoobject_of_a)::BUILD
wayland76 Anyway, it's after midnight again. Bye all &
masak wayland76: o/
jnthn $b.A::BUILD ? 13:44
ruoso jnthn, not if you only have A in a variable 13:45
jnthn ah, don't think we need to huffmanize that case so much...
ruoso like when you're traversing its isa to get the superclasses to call BUILD
13:45 payload left
ruoso jnthn, it's not about huffmanization... 13:45
13:46 Lorn joined
jnthn Sure, but that doesn't need something syntactically neat. 13:46
Especially as not all implementations would write that bit in Perl 6 anyway.
ruoso right... but calling a method from the perspective of a different class is supposed to be valid Perl 6 13:47
not only used in BUILDALL
13:47 PhatEddy joined
ruoso at least that's why the weird construct above is parsed by std (I think) 13:47
13:48 jferrero left
jnthn I think normally you know what that class is by name, and thus can write the name. 13:48
ruoso except when you don't ;)
jnthn Alternatively, $proto.^dispatch(...) or the thing you showed above.
IMO, if you're doing weird introspective stuff it needn't be any shorter than Perl 6 already allows. 13:49
ruoso agreed... but the fact is that STD does support that syntax ;)
jnthn Sure.
Not disagreeing it should probably work, just that we don't need anything more compact. 13:50
ruoso oh... I wasn't trying to get one... 13:51
moritz_ jnthn: I'm running autounfudge now, and so far no hits... 'my sub' parsed before, and most test didn't really need lexical subs 13:52
13:53 nihiliad left, cognominal joined
jnthn ruoso: Oh, OK - then sorry, I misunderstood. :-) 13:54
moritz_: Aye.
moritz_: Do you know if we have any tests for lexical multis?
moritz_ jnthn: no, but I might have some tuits tonight 13:55
jnthn OK, I may write some now anyway
Because I want to make sure I got various things right.
moritz_ then I can extend them later on (and bomb you with tickets :-) 13:56
PhatEddy rakudo: 1000000[1]
jnthn Sounds awesome. :-)
p6eval rakudo c40f3b: OUTPUTĀ«elements() not implemented in class 'Integer'ā¤current instr.: 'postcircumfix:[ ]' pc 3937 (src/classes/Positional.pir:108)ā¤Ā»
masak we still haven't found someone whose job it is to keep the ticket count down, have we? (except for the implementors, that is.)
PhatEddy: what did you expect that to do? 13:57
PhatEddy according to an old ticket it was giving some parrot errors 13:58
rt 57790 rt.perl.org/rt3/Public/Bug/Display.html?id=57790
masak PhatEddy: ah.
August... I didn't recognize it. :) 13:59
I think we can close that one. 14:00
14:00 [particle] left
masak RT++ 14:03
jnthn We maybe want to give a better error than that, but yes, it's expected to aprse, but runtime fail.
masak which it does. 14:06
14:06 thepler left
PhatEddy At the risk of sounding uppity, may I suggest that if a better error is desired, the ticket could be reopened with a comment could be noting the current improvement and some idea of the desired error output. 14:09
masak feel free.
PhatEddy rakudo: abc[100] 14:11
p6eval rakudo c40f3b: OUTPUTĀ«Could not find non-existent sub abcā¤current instr.: '_block14' pc 58 (EVAL_16:40)ā¤Ā»
PhatEddy Any thoughts on approaching appropriate error output? 14:12
PerlJam PhatEddy: how about just make it work rather than error? 14:13
jnthn PerlJam: What would you expect it to do?
PerlJam jnthn: I like the idea of Scalar[$index] returning the Scalar (so, 10[1] == 10) 14:14
er, 10[0]
oh
PerlJam was operating under a different set of assumptions :)
PhatEddy: I hereby retract what I just said and suggest the error be whatever the error should be for things like my Int[5] @a; (assuming I got the syntax right for specifying the max elements in @a) 14:17
Something like "Can't index past the end of the thingy" :)
PhatEddy rakudo: my %a; say %a[ 2 ] 14:20
p6eval rakudo c40f3b: OUTPUTĀ«Method 'postcircumfix:[ ]' not found for invocant of class 'Perl6Hash'ā¤current instr.: 'postcircumfix:[ ]' pc 3926 (src/classes/Positional.pir:100)ā¤Ā»
PhatEddy OK ?
something like -"Method 'postcurcumfix:[]' not found for invocant " with some further elaboration ? ok ?? 14:25
PerlJam I don't like it, but I'm probably in the minority :) 14:26
masak PerlJam: but it describes the symptom perfectly. 14:27
jnthn PhatEddy: Something like that looks good to me.
14:28 ZuLuuuuuu joined
PerlJam masak: well, should 10[0] work or not? I like the idea that it should. 14:31
masak PerlJam: me too. but that's decidedly a different (not yet created) ticket.
PerlJam 10[1] would then just be indexing beyond the bounds of the scalar.
Just like my Int[5] @a; @a[12] is indexing beyond the bounds of @a 14:32
14:32 amoc joined
PhatEddy rakudo: say "abc"[0] 14:35
p6eval rakudo c40f3b: OUTPUTĀ«Method 'postcircumfix:[ ]' not found for invocant of class 'Str'ā¤current instr.: 'postcircumfix:[ ]' pc 3926 (src/classes/Positional.pir:100)ā¤Ā» 14:36
skids It isn't a particularly useful thing. Perhaps it would be better not to define its behavior in case someone figures out something useful to do with 10[1] syntax -- I dunno, binary bitfield extraction or something?
14:38 [particle] joined, brunoV joined
pugs_svn r26051 | moritz++ | some small unfudges 14:40
14:41 ejs left 14:43 Tene joined
skids Perhaps the best error for 10[2] would be "Maybe you meant :10[2]?" 14:44
PerlJam what does *that* do? 14:45
moritz_ finds Method 'postcircumfix:[ ]' not found for invocant of class 'Str'
masak skids: well, maybe the user meant "10".substr(2) or (10,)[2] ...
moritz_ not all that bad
masak moritz_: nod.
PhatEddy Comment was added to the ticket (57790) but I don't have permission to re-open ... 14:46
14:46 dKingston joined 14:48 nihiliad joined
masak PhatEddy: hold on, I'll do it. 14:51
I'll rename it while I'm at it. 14:52
pmichaud good morning #perl6 14:53
literal hi
jnthn hi pm
PerlJam morning pm 14:55
moritz_ RT #64360 looks good - opinions?
masak pmichaud: oh hai
[particle] pmichaud: did your unicode patch give a good bump in passing spec tests?
moritz_ and RT #64368 looks also nice IMHO 14:56
14:56 Tene_ left
eiro hmm .. i know this is a parrot question but ... does someone knows if pynie will grown fast ? 14:56
masak eiro: I think allison works on pynie. maybe ask her? 14:57
moritz_ eiro: allison said she'll work on it in the next few months
[particle] eiro: it will be worked on soon by allison, at least
moritz_ lol
masak heh.
[particle] for pycon
masak eiro: more to the point, what is it that you'd like in pynie?
eiro hehe ... the fact that python communauty will test parrot 14:58
PerlJam pynie is going to be python 3 rather than 2 AIUT 14:59
eiro ok
that's a good idea: python2 is not so smart 15:00
literal AIUT? as I understand that?
masak argh! seems my recent boldness in refactoring Druid after adding the tests has in fact broken the CLI in various places. :/ 15:01
PerlJam literal: as i understand things
masak oh well, no-one's fault but my own.
jnthn
.oO( I wasn't quite expecting to implement part of what we'll need to do lift along the way to doing lexical multi-subs, but anyways... )
15:03
pmichaud [particle]: (unicode + passing spec) a smaller bump than i had hoped. So far only around 287 tests (out of a possible 2200) 15:04
15:04 Maghnus left, Psyche^ joined
pmichaud we'll need to figure out how Parrot wants to expose character properties 15:04
but we are able to do things like 15:05
rakudo: say "\c[black telephone]"
p6eval rakudo c40f3b: OUTPUTĀ«ā˜Žā¤Ā»
pmichaud also the refactoring means I'm not having to re-write the "parse \x, \c, \o" code over and over again. 15:06
ruoso [black telephne]++ ;)
pmichaud (previously it existed in about 3-4 different places)
[particle] rakudo: say "\[neither less-than nor greater-than]"
p6eval rakudo c40f3b: OUTPUTĀ«[neither less-than nor greater-than]ā¤Ā»
jnthn ...nice character!
moritz_ wonders why it works with black telephone, but not with blue mountains ;-) 15:07
pmichaud rakudo: say "\c[hot beverage]"
p6eval rakudo c40f3b: OUTPUTĀ«ā˜•ā¤Ā»
[particle] rakudo: say "\c[asterism]"
p6eval rakudo c40f3b: OUTPUTĀ«ā‚ā¤Ā»
15:07 estrabd left
ruoso rakudo: say "\c[beer]" 15:08
[particle] why not neither less-than nor greater-than?
p6eval rakudo c40f3b: OUTPUTĀ«perl6regex parse error: Unrecognized character name beer at offset 8, found 'b'ā¤current instr.: 'parrot;PGE;Perl6Regex;parse_error' pc 10552 (compilers/pge/PGE/Perl6Regex.pir:1323)ā¤Ā»
ruoso ahhh
moritz_ [particle]: forgot c after \
[particle] ack.
rakudo: say "\c[neither less-than nor greater-than]"
p6eval rakudo c40f3b: OUTPUTĀ«ā‰øā¤Ā»
[particle] joy.
masak Rakudo++
[particle] we should implement that op to compare NaN
jnthn rakudo: say "\c[REVERSED ROTATED FLORAL HEART BULLET]"
p6eval rakudo c40f3b: OUTPUTĀ«ā˜™ā¤Ā»
jnthn
.oO( The unicode character name drinking game could be interesting... )
15:09
moritz_ ;-)
pmichaud anyway, now the trick will be for us to figure out how to "require" ICU for rakudo
PerlJam rakudo: say " \c[Combining Cyrillic Millions Sign]" 15:10
p6eval rakudo c40f3b: OUTPUTĀ« Ņ‰ā¤Ā»
pmichaud rakudo: say "\c[keyboard]"
p6eval rakudo c40f3b: OUTPUTĀ«āŒØā¤Ā»
PerlJam oops, left the spaces in
say "\c[white square]" 15:11
rakudo: say "\c[white square]"
p6eval rakudo c40f3b: OUTPUTĀ«ā–”ā¤Ā»
[particle] pmichaud: you can probe parrot-config for HAS_ICU 15:12
pmichaud [particle]: yes, I know that part. The question is what to do if HAS_ICU is false. 15:13
ruoso rakudo: say "\c[hot springs]"
p6eval rakudo c40f3b: OUTPUTĀ«ā™Øā¤Ā»
dalek kudo: 7a56d9e | pmichaud++ | docs/spectest-progress.csv:
spectest-progress.csv update: 340 files, 8049 passing, 0 failing
15:14 hercynium joined
PhatEddy rakudo: $_ = "a"; say /b/ ?? "yes" !! "no" 15:20
p6eval rakudo 7a56d9: OUTPUTĀ«yesā¤Ā»
15:20 Patterner left, Psyche^ is now known as Patterner, DemoFreak joined
pmichaud rakudo doesn't always know how to do immediate-match-against-$_ 15:20
PerlJam you know ... everywhere I find unicode character sets, they always give the hex code for them, yet the spec says that you can only use decimal numbers inside of \c[...]. It would be nice to be able to say "\c[x405,x415,x425]" instead of "\c[1029,1045,1061]"
moritz_ PerlJam: that's what \x is for 15:21
pmichaud rakudo: say "\x[405,415,425]"
p6eval rakudo 7a56d9: OUTPUTĀ«Š…Š•Š„ā¤Ā»
pugs_svn r26052 | jnthn++ | [t/spec] S06-multi/lexical-subs.t did not test multi subs, but just single dispatch lexical subs; moving it.
PerlJam Sure. I guess I was really wondering why only decimal numbers in \c[] 15:22
or eve why decimals in the first place
pmichaud well, at one time it was \d[...]
PhatEddy The match problem is from ticket 61662 (rt.perl.org/rt3/Public/Bug/Display....?id=61662) which seems to describe a changing topic problem which really seems to be an always matches problem described in t/spec/S05-metasyntax/regex.t 15:23
pmichaud i.e., there used to be separate \c[...] and \d[...]
I think \d[...] was eliminated to reduce confusion between it and the regex \d
15:23 M_o_C joined
PerlJam that makes sense. Anything to reduce the number of special cases I have to remember :) 15:24
15:24 masak left
PhatEddy I didn't find a ticket for the always matches problem and, if no objection, will try to make 61662 and the always matches problem in the tests point to each other. 15:26
pmichaud can we call it something other than 'always matches'? That's not really accurate. 15:27
with say /b/ ?? "yes" !! "no" the real issue is that no match is performed at all -- the regex simply considers itself to be true. 15:28
but beyond that, I wonder if /b/ _should_ be doing an immediate match there (and if so, how do we know that?) 15:29
PerlJam pmichaud: it should because /b/ is in a boolean value context :) 15:30
pmichaud so, all Regexes in boolean context match themselves against $_ ?
jnthn Did somebody unfudge something in S16-filehandles/unlink.t while I wasn't watching?
pmichaud say regex { b } ?? "yes" !! "no";
my $a = /b/; say $a ?? "yes" !! "no"; 15:31
moritz_ jnthn: I did, yes
jnthn: does it fail on windows?
jnthn moritz_: Yes. :-( 15:32
moritz_ jnthn: ah. It passes here :/
PerlJam pm: the spec would be simpler I think if Larry just make m// always match and if you want a regex object, you have to use rx// or one of the other forms.
jnthn moritz_: Yeah, that's what I suspected when I saw it unfudged. :/
pmichaud m// always matches already.
PerlJam s/make/made/
pm: I mean //
jnthn moritz_: It is only test 6 that fails, I should note.
(The very last one.)
moritz_ jnthn: I'll re-fudge 15:33
pugs_svn r26053 | jnthn++ | [t/spec] Add some initial tests for lexical multis.
PerlJam // should just be a short-cut for m// for when you don't need adverbial modification.
pmichaud and rx// is a shortcut for regex {} ?
pugs_svn r26054 | moritz++ | [t/spec] re-fudged test that fails on windows. moritz-- 15:34
PerlJam aye
pmichaud I wonder how that impacts the anchoring provisions
moritz_ jnthn: does it pass now again?
jnthn moritz_: Well, good to know it's platform specific... 15:35
15:35 payload joined
jnthn moritz_: Yes 15:35
moritz_ good
pmichaud PerlJam: note also that what you suggest would change: @a.grep( /foo/ ) 15:36
PerlJam I think I can live with a little extra typing there.
15:37 alester joined
PhatEddy rakudo: say "\c[rhythm]" 15:37
PerlJam I don't know how much of the current spec on // is just history versus huffman though
p6eval rakudo 7a56d9: OUTPUTĀ«perl6regex parse error: Unrecognized character name rhythm at offset 8, found 'r'ā¤current instr.: 'parrot;PGE;Perl6Regex;parse_error' pc 10552 (compilers/pge/PGE/Perl6Regex.pir:1323)ā¤Ā»
dalek kudo: 13ddade | jnthn++ | src/ (3 files):
First cut at implementing lexical multi subs.
15:38
kudo: 9cdadc2 | jnthn++ | t/spectest.data:
Add S06-multi/lexical-multis.t to spectest.data.
[particle] so, multi circumfix:</ />(Regex $) ?
pmichaud [particle]: close.... / / is a quote operator.
[particle] ah, right.
i don't like the lack of a leader there 15:39
i never use bare /.../ in perl 5
pmichaud well, it's not so bad... /.../ (regex) is analogous to {...} (block)
[particle] and '...' (string), yes 15:40
still, rx{...} isn't a block 15:41
pmichaud sure it is.
[particle] and there's no alternate delimiter syntax for blocks
pmichaud rx{...} is a block.
[particle] is qq/.../ ?
pmichaud no. 15:42
[particle] rx/.../ ?
pmichaud yes.
(all regexes are blocks)
[particle] ok.
pmichaud it's a block by virtue of being a regex, not because of the syntax used to create it
[particle] yes, i see now. 15:43
still... something bugs me about strings not being blocks.
moritz_ Perl 6: Everything Is A Block
[particle] i mean, you're using different parsers for regexen, blocks, and strings
two of the three are blocks
moritz_ well, in some sense strings are blocks also, in that they only interpolate when the string is actually used 15:44
that is, at run time
[particle] a different two of three have alternate delimiter rules
moritz_: that's what i'm getting at.
moritz_ ... and now you want to unify blocks, strings and regexes 15:45
[particle] YES
pmichaud well, I don't think I want a string to be a block.
[particle] pmichaud: and i want to hear why. i'm sure there are good reasons
PerlJam If // always matched, where else would be need rx//? @a.grep(rx/.../) $str.split(rx/.../) and ... ?
15:46 pmurias joined
pmichaud from a purely implementation perspective: blocks right now correspond to new lexical scopes and (in Parrot) to separate invocation subs 15:46
moritz_ my $x = rx/.../
pmichaud having every string constant correspond to a new lexical scope and (Parrot) block invocation would get expensive.
PerlJam: anywhere that we currently expect to pass a regex to a function or method 15:47
moritz_ pmichaud: I think it's more about the notion, not about them being an actual block
pmichaud moritz_: because I don't think String ~~ Block (how's that?)
PerlJam pm: yeah, but what are the common places? I'm suffering a failure of imagination or something because I can't think of many :)
moritz_ pmichaud: better ;-) 15:48
pmichaud PerlJam: maybe we should look through the test suite?
moritz_ actually, if we expand the analogy, we'd introduce a syntax for blocks with different delimiters.... but I don't see how that would make sense
[particle] BEGIN ... END
:)
moritz_ for regexes and strings it makes sense because the contents can collide with the delimiter
pugs_svn r26055 | jnthn++ | [t/spec] More tests to exercise lexical multi subs.
moritz_ actually, much less in Perl 6 15:49
[particle] moritz_: that can happen in blocks, too, if you create postfix:<}>
PerlJam The flip side of could be to make // always create a regex object and require m// to actually match. That's slightly more huffman.
pmichaud and we do have block introducers: -> <->
15:49 justatheory joined
PerlJam s/of // 15:49
[particle] pmichaud: so those could take alternate delimiters.
pmichaud one could conceivably do it that way, yes. 15:50
[particle] just like we have regex/token/rule, block/string/regex can be unified, with various adverbs to distinguish them
{:regex ...}, or maybe it's {...} :string 15:51
pmurias hi
pmichaud I'm still not certain that all DSL's should automatically correspond to blocks.
PerlJam [particle]: you get an end-weight problem with that last example
moritz_ neither am I, but it's interesting to exercise the idea
[particle] perljam: yes, definitely 15:52
15:52 hercynium left
pmichaud PerlJam: yes, I'd prefer to see that m/.../ always mean "immediate match" and leave the // and rx// forms for "scanning regexes" 15:52
[particle] and it's probably more that qq{} === {:!lexpad :string<interpolate> ...}
pmichaud: i agree there 15:53
moritz_ pmichaud: so would $a ~~ m/../ match the regex immediately against $_, and then match $a against the Match object
pmichaud moritz_: I'd treat smart match as syntactically special in that instance.
moritz_ or what does 'immediately' mean?
pmichaud Indeed, it already is.
moritz_ ok 15:54
I think the main reason for /.../ was to allow $str.split: /.../ and such methods
where perl 5 even allowed m/.../
PerlJam moritz_: $a ~~ /.../ is fine though, and if you need adverbs, $a ~~ rx:foo/.../
pmichaud yes, smart match has some dwimminess built-in that causes it to treat m/.../ rx/.../ and /.../ identically 15:55
but smart match is syntactically empowered to do such things.
?? !! doesn't have quite that much syntax help.
lambdabot !! doesn't have quite that much syntax help.
pmichaud why does lambdabot think that every non-word character has some sort of important meaning? 15:56
[particle] @stupid bot
lambdabot Unknown command, try @list
PhatEddy hoping this means that $str.split: /.../ will continue to work without requiring m/.../
PerlJam like all bots, lambdabot is stupid :)
pmichaud PhatEddy: $str.split: /.../ and $str.split: m/.../ mean different things 15:57
[particle] set up irssi to prefix all non / messages with a space
pmichaud the first says to split on the regex. The second says to immediately match $_ against the regex and then split on that.
(short answer to your question: $str.split: /.../ will do what you expect.) 15:58
15:59 xinming_ is now known as xinming
PerlJam pm: but then how does $str.split: m/.../ know how to treat the result of m/.../? Should it just assume ~$/ for purposes of dispatch? (I'm not saying the others make sense, just how does the dispatcher know which to use) 15:59
pmichaud PerlJam: it would likely go to .split(Any $x)
so it will do whatever happens to $x in that case
if the default is to treat $x as a string, then it will stringify the Match object and split on that 16:00
i.e., if there's not a special .split(Match) method, then it likely dispatches to .split(Any) and we go from there.
PerlJam This is one of those things where I think I'd want the parser giving me hints about what it thinks I meant :) 16:01
$str.split: m// is so bizarre
pmichaud which is why I wouldn't expect to see it used much.
that's why the 'm' is in the front :-)
PerlJam I can see it happening by accident because that m is so small. 16:02
pmichaud sure, I can also.
moritz_ m like bizarre?
pmichaud We could always have .split(Match) throw a warning.
moritz_ pmichaud: good idea 16:03
PerlJam yeah.
(but so far, we're still conjecturing. Or should one of us change the spec and incur the ire of Larry? :-)
pmichaud multi method split(Match $) { die 'You probably mean ~$/ or ~m/.../ instead'; }
moritz_ or /.../ 16:04
literal judging from the above conversation, rx// and // would be like Perl 5's qr//, while m// will stay the same?
pmichaud like qr// but without the string interpolation semantics
PerlJam but basically right
16:05 cognominal left
pmichaud we'd probably want syntax help for if /foo/ { ... } also 16:06
PhatEddy I am not sure split with m// is really that rare. I use m!/! for web applications in p5 often
PerlJam pm: indeed.
pmichaud okay. I'm heading off to lunch, then I'll be back to write bunches of messages. 16:07
literal it seems kind of confusing to me that m// be special in that it demands a match, that'd be like defining a subroutine that demands to be run straight away 16:08
why not just prepend a ~~ if one wants to match straight away?
pmichaud literal: because matching against the topic ($_) wants huffmanization 16:09
literal like you would append a () or .() to a sub you want to execute straight away
PerlJam literal: because writing $_ ~~ /.../ everywhere kind of defeats the purpose of having a short-cut
pmichaud i.e., m/foo/ is equivalent to $_ ~~ /foo/
although maybe it should be ./foo/ :-P
[particle] yeah, i was thinking about .m/.../ 16:10
does .() invoke $_ ?
pmichaud std: .()
p6eval std 26055: OUTPUTĀ«ok 00:02 35mā¤Ā»
pmichaud it might :-)
[particle] ./.../ or .m/.../ is short enough for me 16:11
make that ./.../ or .m(...) # or other alternate delimiters
literal that seems logical 16:12
pmichaud please no 16:13
PerlJam I don't really see how ./.../ could work.
pmichaud you're conflating two syntaxes there.
.foo(...) already has a meaning
we don't want to treat .m(...) as being special
[particle] .m is calling the m method on $_
pmichaud fine
but the method invocation syntax is (...), not /.../ 16:14
literal .m: /.../ ?
hm, no
pmichaud .m($x) probably should not mean $_ ~~ /$x/
literal: .match: /.../ already exists, I think.
literal when /.../ 16:15
pmichaud that works but has extra semantic baggage
literal how so?
pmichaud it skips to the end of the block after matching 16:16
literal ok
pmichaud i.e., when /.../ isn't the same as if m/.../
16:18 ashizawa left 16:23 ashizawa joined
PhatEddy rakudo: my $x = "a" ~~ s/a/c/; 16:24
p6eval rakudo 9cdadc: OUTPUTĀ«Statement not terminated properly at line 1, near "/;"ā¤ā¤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)ā¤Ā»
[particle] std: my $x = "a" ~~ s/a/c/; 16:26
p6eval std 26055: OUTPUTĀ«ok 00:04 37mā¤Ā»
PerlJam PhatEddy: I don't think rakudo groks s/// yet. But there's a .subst() method you can call IIRC
rakudo: my $x = "a"; say $x.subst(/a/,"c"); 16:28
p6eval rakudo 9cdadc: OUTPUTĀ«cā¤Ā»
PhatEddy I noticed - just a thought in progress(?) about consistency for topic matches. 16:29
PerlJam you mean if m// always matches against $_, so should s/// ? 16:30
so that $foo ~~ s/// doesn't make sense any more?
PhatEddy Wondering perhaps - getting possibly way ahead of myself - if // ?? !! could be a void context type error for the moment until s/// works. 16:31
PerlJam I don't get it. 16:34
pmichaud $foo ~~ s/// would likely still work for the same reason that $foo ~~ m// does (syntactic help) 16:36
pugs_svn r26056 | jnthn++ | [t/spec] Fudging for Rakudo. 16:45
16:48 Khisanth left
dalek kudo: 1bf637c | jnthn++ | t/spectest.data:
Add S06-advanced_subroutine_features/lexical-subs.t to spectest.data.
16:52
16:54 rindolf joined 16:55 mncharity joined
pasteling "mncharity" at 98.216.110.149 pasted "Alternatives to Elf" (25 lines, 1.5K) at sial.org/pbot/35823 16:56
16:57 dKingston left
mncharity pmichaud: I'm uncertain I'll actually post this anywhere, but could you reality check the Rakudo/Parrot paragraph? My thanks. 16:57
16:58 dKingston joined
PerlJam mncharity: I would call rakudo the best all around perl 6 implementation myself :) 16:59
pmichaud mncharity: I'm obviously a bit biased, but I suspect pugs is no longer the best all-around implementation 17:00
I'm not saying rakudo beats it, but in many places pugs is working off of outdated specs
it would be very interesting to see a spectest report for pugs
for rakudo I would also note that the non-small p6 development efforts that do exist are generally targeting rakudo. 17:02
mncharity what non-small p6 development efforts exist other than elf?
re rest, hmm, ok. I'll need to capture the concept that
pmichaud I'm sorry, I was using the phrase in the same sense that I thought you were using it in the paragraph 17:03
There is very little
track-record to suggest how non-small p6 development will fare
mncharity not "best wrt current spec coverage", but "best wrt running hunks of p6 code".
pmichaud I'd even go for "best wrt running hunks of p6 code"
but that's highly subjective, and it depends on what parts of p6 you expect to work.
mncharity re track-record, ahh, another ambiguity to rephrase away.
pmurias mncharity: re perl5 and Moose implementation it's an easy way to get large chunk of features but you will struggle horribly to get the rest 17:04
s/large/a large/
mncharity re hunks, my impression was/is rakudo doesn't have anything like pugs's ext/* . no?
re struggle horribly, oh yes, indeed. hmm, so my unstated hypothesis is that a near-term usable implementation of p6, be it pugs, rakudo, elf, smop, or whatever, is almost certainly going to serve as a throwaway, just good enough to generate interest, and support bootstrapping a full p6 compiler. 17:06
pmichaud we don't host them within rakudo's repo, no
odd, November isn't listed on perl6-projects.org 17:08
mncharity: Web.pm is being built for Rakudo
jnthn Form.pm also.
pmichaud others have built URI parsers and the like 17:09
so why Rakudo doesn't have as much as ext/*, a lot is being developed "as we speak"
and, fwiw, I disagree with your unstated hypothesis, but I think that's just an area where we agree to disagree. 17:10
Rakudo is totally intended to be a full p6 compiler. The hypothesis that a full p6 compiler must be bootstrapped I don't agree with.
mncharity I tend to think of parrot delivering a usably fast vm as a still open question. If we have to use LLVM i 17:11
pugs_svn r26057 | pmurias++ | [re-smop] ported m0ld over
mncharity nstead, then the easiest path there seems a compiler written in p6. running on rakudo, or wherever. 17:12
pmichaud I agree that Parrot's speed remains an open question.
but that doesn't mean that translating to a different backend requires doing so in p6
pmurias parrots design seems very performance oriented
pmichaud parrot's design is performance oriented. Its implementation is an open question. :-| 17:13
17:13 aindilis joined
pmichaud or, phrase another way, parrot targets a language that has features a lot like p5. Unfortunately, p6 isn't such a language. 17:13
17:14 rindolf left
mncharity hmm. I almost suggested attempting a consensus "State of P6" post for end of quarter. Punted thinking the parrot/non-parrot division might generate more unhelpful heat than light. Might have been the wrong call. 17:16
17:16 Kisu joined
jnthn re having a stable subset of Perl 6 to do compiler development in - we do have one (NQP). 17:18
mncharity re 'doesn't mean that translating to a different backend requires doing so in p6', indeed. but what are the choices? p5, p6, hs, and... what else?
pmichaud depends on the backend
i.e., if I decided to target .net, I'd use .net tools 17:19
(yes, there are all sorts of reasons not to target .net or why it might not work -- but the backend somewhat indicates the choice of tools available)
in the case of Parrot, we used tools available for Parrot (or built them as needed)
you are correct that now that we have some usable implementations it may be possible and worthy to rewrite some of those tools in p6. but I see that happening "as we need them" as opposed to being a prerequisite for having things work "at all" 17:20
that's why my next major phase of development is to refactor PGE, and to do the refactoring with an eye towards porting it to other backends 17:21
because I think what pugs and rakudo and std teaches us is that a Perl 6 implementation is not really useful without a working grammar engine 17:22
(and the fact that pugs didn't have one is what started getting in its way)
mncharity oh yeah. # re not really useful
pmichaud so, I thik that any p6 implementation somewhat has to start with a grammar engine. 17:23
*think
if we can write an efficient grammar engine in p6 (or a useful subset of p6), that will be cool. That's part of what I'm hoping to do. But it's one goal among many, and not my primary one at this point. 17:24
(i.e., having a more complete grammar engine is more important than having one written in p6)
mncharity re pugs, well, I'd suggest the nuance that it was pugs not fully exporting its parse tree which got in the way of alternate pugs backends only. it was the 'bogging down in pugsbugs' problem which blocked the move from hs to p6 prelude. and then audreyt leaving of course. 17:25
pmichaud I think it's more that pugs' grammar wasn't really based on perl 6 rules
moritz_ pmichaud: I don't think that was the primary problem 17:26
mncharity and that was a problem for doing what?
pmichaud "exporting the parse tree"
i.e., pugs' parse tree wasn't really following the p6 design
rakudo's parser has always been written in Perl 6. 17:27
mncharity no, well, yes, if there was a match tree, one might export it. but no, the problem wasn't the form of the tree, but that it didn't contain object declaration information.
one could have had a pugs-style tree, with oo info, which would have been just fine for alternate backends. 17:28
pmurias doesn't pugs use PIL as the parse tree?
17:28 barney joined
pmichaud but that wouldn't have really been Perl 6. IIUC, part of the reason Larry did STD.pm was because the implementations weren't converging on a parsing solution 17:28
at _some_ point Pugs would've had to adapt to something more STD.pm-like 17:29
mncharity re PIL, yes but, take a simple class A is B { has ... blah etc }, and look at the pil dump. 17:30
pmichaud One reason Pugs was able to take off much faster than Rakudo was because it went with Parsec as its parser engine (and Parsec was already highly developed) 17:31
whereas Rakudo always went with Perl 6 expressions.
moritz_ rakudo: class A { if (0, 1).pick { has $.a }; }; say A.new(a => 3).a
p6eval rakudo 1bf637: OUTPUTĀ«Attempt to define attribute $!a outside of class, role, or grammar at line 1, near "}; }; say "ā¤ā¤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)ā¤Ā»
pmichaud but using Parsec also meant that it wasn't going to be the official p6 grammar. 17:32
mncharity re "wouldn't have really been Perl 6", and... why does that matter? 17:33
pmichaud if the point is getting to a full p6 implementation, there were some obstacles there to doing so.
17:33 kane_ left
pmichaud I'm not at all saying they were insurmountable obstacles, and if anyone could do so, I'd bet on audreyt 17:34
mncharity that may actually be at the heart of the parrot/non-parrot split in perspective. (a)"you start with C, and work up", vs (b)"you start with a good language, and write mostly in p6". it's neat, 17:39
pmichaud keeping in mind that parrot's goals are quite different from simply "implement Perl 6" 17:40
mncharity nod
pmichaud I'd best get lunch now, or I shan't get any 17:44
mncharity to illustrate the split in perspective, some things like "wouldn't have really been Perl 6" and followups, have a big "Huh?!?" impact for me. Like someone saying "I going to get lunch, because cats are smaller than trains.".
lol
# re lunch coincidence
pmichaud indeed
17:44 Khisanth joined
pmichaud anyway, back to the paragraphs you wrote -- I don't have any major issues with them at all. 17:45
mncharity my thanks.
pmichaud there are some things that I think might be tweaked to be a bit more accurate, but they're largely subjective and depend on point-of-view
ruoso .oO( following #perl6 gets harder each day... soo many things happening... )
pmichaud so I can't say that they're *in*accurate 17:46
(and wouldn't want to claim that anyway)
mncharity I'll tweak to clarify. Simpler if its a consensus statement.
Beats my usual "I've a policy of not commenting on parrot, sorry."
pmichaud that would be great. We do need to update perl6-projects.org with the other projects that are targeting Rakudo.
there's also eric256's perl6-exmaples repository at github... but perhaps we can make that more prominent 17:48
mncharity good thought. for people contemplating writing some little thing in p6, that may be more useful to them than language coverage info.
a sense of what's possible.
PerlJam But what happens when they go "I don't understand all of this syntax" ? There's really no good docs, just lots of reading synopses. 17:49
17:49 eternaleye left
mncharity the other bit is how hard it was to get it working. eg, the ext/* code was only half the story. the other half was how much effort working around pugsbugs to get to something working was. 17:49
pmichaud right... rakudobugs have the same impact. Hopefully the rakudobugs are being cleared though (if somewhat slowly). 17:50
the folks working with rakudo all comment that there's drastic improvement over time
17:51 icwiener left
ruoso mncharity, getting late in the train... p6-in-p5 was already tried, but you can only get very few of the p6 semantics there, that was when KP6 started, building a runtime on top of p5... Perl 6 is a language that no VM can support today, some are close, but p5 is not one of them... 17:51
mncharity might be worth asking folks coding things to write up a blog-like experience doc as they go. which might also be a learning tool, and feedback for what language docs are most needed. 17:52
pmichaud (blog-like experience doc)... I almost always ask folks writing stuff with rakudo to blog about the effort. Unfortunately, coming from me that seems to be more of a "do as I say, not as I do" sort of thing (which I _really_ need to fix)
okay, lunch. back later. 17:53
PerlJam mncharity: gabor szabo has a perl6 newletter that's good.
szabgab PerlJam++
mncharity hi ruoso. re
ruoso hi mncharity
pmichaud that newsletter probably ought to be mentioned on perl6-projects.org also.
mncharity PerlJam: linked from perl6-projects.org/ ?
PerlJam pm: indeed. (you're never going to lunch :)
pmichaud it also needs to be mentioned on rakudo.org 17:54
[particle] or added to planet.perl6, and mention planet
pmichaud and yes, it should go on planet.perl6 also.
ruoso I think I'm not aware of szabo's newsletter
url?
szabgab szabgba.com/perl6.html
pmichaud and I think it should go on dev.perl.org/perl6/lists too, perhaps.
szabgab szabgbab.com/perl6.html
gravity wants to get rakudo installable to the system using a system-installed parrot before writing code and blogging about it 17:55
ruoso www.szabgab.com/perl6.html actually
szabgab szabgab.com/perl6_tricks_and_treats.html
mncharity re 'p6-in-p5 was already tried', err, yes, by elf. works nicely. :) and the PIL-Run backend for pugs. Worked well there too. re kp6... I do try to avoid saying negative things about other peoples' projects. let's just say p6-on-p5-ness wasn't kp6's problem.
szabgab the other one is the link to the training material
mncharity ruoso: the key thing is 17:56
ruoso mncharity, no... really... kp6 was not a p6-on-p5 projet
mp6 was, v6-alpha was
but kp6 wasn't
which was when it became inpractical because of the performance
mncharity, I'm talking about pre-elf experiments
PhatEddy Just touching back on rt 61662 for the moment, I think it might make sense to close that one and maybe open a [TODO] for huffman coding of topic matching ... 17:57
pmichaud PhatEddy: when I get back from lunch I plan to write a message to p6l asking about /.../ matching 17:58
unless someone beats me to it.
instead of closing 61662 it might be worthwhile to change it to a TODO with the issues
szabgab can I be greedy and ask that the Padre::Plugin::Perl6 would be also mentioned on perl6-projects.org ?
17:58 ejs joined
pmichaud szabgab: you can add it directly if you wish :-) 17:59
it's part of the pugs repo
mncharity you can't do a naive translation. Yes, if you tried to container and box everything, performance would be dreadful. But even quite dumb analysis can do a lot of decontainering and unboxing. So it's clear you can do p6-like while fudging deep p6 semantics, and it seems at least plausible one can get at least some deep semantics with a bit of compiler smarts.
szabgab ah
yeah I can spam that page :-)
PhatEddy (sorry - I already finished my lunch and had lost track a bit ...)
pmichaud szabgab: docs/feather/perl6-projects.org 18:00
szabgab yeah I found it, thanks
ruoso mncharity, well.. you can try to translate p6 code to p5 in the sense of "let's see what the user meant", but you're not getting p6 semantics, and nothing even close to that...
18:01 cognominal joined
szabgab busy trying to convince someone to do a Padre GSoc 18:01
pmichaud okay, I'm really leaving for lunch now.
szabgab or to apply for one
ruoso szabgab, I think we kinda have more mentors than students atm
szabgab with 24 hours left that does not look good on the student side 18:03
[particle] ruoso: that's no different from previous years
and we'll have more applications than slots, too
ruoso sure...
mncharity re 'kp6 performance', kp6's impractical performance was caused by design decisions other than p5-ness. re pre-elf, pugs had a p5 backend. passed something like half the test suite. performance wasn't great, but usable. elf is in some spiritual sense just that backend freed from pugs's parse-tree incompleteness by the ruby or gimme5 STD parse-tree dumps.
ruoso mncharity, kp6 performance was bad because it wasn't trying to translate p6 semantics to p5... it was implementing the whole p6 runtime on top of p5... so, I don't think kp6 really fits in the p6-in-p5 world 18:05
mncharity re 'but you're not getting p6 semantics, and nothing even close to that', hmm, I suspect it...
huh? "don't think kp6 really fits in the p6-in-p5 world"?
18:06 charsbar left
ruoso it really wasn't p5 18:06
mncharity oh, a distinction between p6 IN p5, vs p6 ON p5??
ruoso the code kp6 generated
mncharity /me still puzzled
ruoso kp6 implemented a calling convention on its own 18:07
it wasn't p5, really
it was written in p5
but it wasn't p5
mncharity so does elf, so?
ruoso doesn't elf use the object system of the host language?
kp6 didn't... kp6 implemented an object system on its own... 18:08
in order to provide p6 semantics
mncharity it ran on perl5. hmm, you're (mabye) saying that kp6 didn't emit p5 code, so was unable to "touch the metal", and thus was slow?
ruoso kp6 did emit p5 code... but it wasn't really p5 code... 18:09
18:09 charsbar joined
ruoso it was a giberish that happened to be ran by the p5 interpreter 18:09
mncharity would you consider Moose p5? 18:11
ruoso Moose is p5
it uses p5 object system 18:12
even if in a very interesting way
but it does
kp6 really implemented everything from scratch
and no, Moose does not provide all the semantics Perl 6 defines...
mncharity ah, ok. I see the "non p5" position now I think. 18:13
ruoso when smop started (yap6 at that time), it was largely based on what kp6 implemented
but instead of being written in p5, it was written in C
at the time I started it, I was considering it as a prospective backend for kp 18:14
k6p
kp6
mncharity It would seem to be a continuum, yes? as for instance, Moose is a mix. and especially with a compiler backend which controls the code so you don't have to worrying about human writeability. from it's all native oo, to oo used with increasing extra mechanism, to native oo is used less and less, to native oo is only used to implement a non-native oo layer. 18:16
yes?
ruoso trying to parse that 18:17
kp6 didn't use p5 oo at all 18:18
szabgab what is this p6-in-p5 world ? I could not understand from the backlog yet
ruoso szabgab, by p6-in-p5 I mean the Perl 6 to Perl 5 translators... i.e. v6-alpha 18:20
mncharity on that continuum, elfp5 is native-oo with extra mechanism (autobox and such), elfcl is currently native-oo used in a non-standard manner, and will become non-"native"-oo as soon as someone gets around to it. Though in CLOS, calling it non-native doesn't quite work as a concept, as the object system is set up for games this.
18:20 payload left
szabgab so not embedding perl 6 in perl 5 ? 18:20
ruoso szabgab, not embedding. no...
mncharity /me now very confused. 18:21
"translators"? but not "embedding"? hmm, mabye punt, and go back to
[particle] szabgab: perl 6 implemented in perl 5
szabgab ok 18:22
ruoso [particle], but my argument here is not just "implemented in perl 5" but that actually use p5 semantics to run p6 code
i.e.... translating p6 classes to moose classes 18:23
mncharity [particle]: re "implemented", yeah, that was my default interpretation, but it doesn't seem that's it...
ruoso as a basic test... 18:24
[particle] ok, a perl 5 runtime for perl 6
mncharity re 'but you're not getting p6 semantics, and nothing even close to that', hmm, I suspect this will depend on what "p6 semantics" mean. Let's see, does pugs have them? rakudo?
18:25 hercynium joined
ruoso mncharity, it gets to fundamental things as binding, for instance 18:25
it doesn't apply only to exotic features
pmurias mncharity: re Moose, Moose is idiomatic perl5
mncharity re binding, there are CPAN modules to do binding, no? 18:26
ruoso not with the P6 semantics
in p5 there is only the value
there isn't a container and a value
18:26 cdarroch joined
ruoso the value is the SV* 18:26
pmurias you can fake containers with tie
mncharity /me quite confused, steps back to look around 18:28
ruoso well... I don't remember where the things got weird...
but trying to bring p6 semantics to p5 was tried before... 18:29
pugs_svn r26058 | szabgab++ | links to blogs of Moritz Lenz, Gabor Szabo and Inline::Rakudo 18:30
18:30 amoc left
mncharity Hmm, let's take binding. And agree binding might be classed as important p6 semantics. Though elf doesn't support it, and one can imagine writing a large p6 program without it. Binding is a compile-time issue no? A compiler can implement it with no runtime support. So does it matter that p5 doesn't have a native binding construct? 18:30
pmurias binding is a runtime thing 18:31
ruoso mncharity, ::= is compile-time, := is runtime
18:31 fehagethzdt joined
mncharity ah, ok, nm. hmm. 18:31
fehagethzdt hi
pmurias fehagethzdt: hi
ruoso mncharity, binding, in fact, is one of the most important concepts of p6 in terms of runtime 18:32
every method or sub invocation implies in binding a capture to a signature
mncharity ::= or := ?
ruoso :=
18:32 rindolf joined, PhatEddy left 18:33 fehagethzdt left
mncharity /me wonders whether to try and straighten out the misunderstanding that just went by... punts... 18:33
ok, how about this,
in any language implementation porting project, there's the 80% (bogus numbers) which is easy, the 17% which is hard, and the 3% which is a world of pain which requires either structuring your entire effort around them, sometimes crippling it, or declaring a 97% success is good enough. 18:36
ruoso mncharity, the problem is that when talking about Perl 6, the easy part is well below 30% 18:37
I'd say at least other 30% are the "world of pain"
and maybe only 40% is hard 18:38
mncharity the fact that signature/capture is speced as := , doesn't mean a compiler actually has to implement it that way, certainly not in the general case. there may well be some use that is hard/slow, and perhaps even some that just can't plausibly be done on p5, even with XS support. maybe. but... I've not seen an argument that that's the case as yet. 18:39
ruoso mncharity, bar(grep {...}, map {...}, foo()), 18:41
that needs actual p6 semantics to work as expected
mncharity re well below 30%, the iblech's pugs javascript backend was, while glacial (all js was glacial 5 years ago), was passing >60% of the pugs test suite. could have been much more but, as mentioned, pugs wasn't providing its backends with oo info. so I don't believe the "well below 30%". though perhaps were using different X% _of what).
phone 18:42
ruoso TDD is actually misleading when you dpnt have a very represesntative test suite 18:43
PerlJam ruoso: that statement doesn't make sense (to me) 18:45
mncharity gotta go. re bar, yes, but bar(3,4) doesn't, and the compiler is free to emit the two differently. re TDD, more tests++. 18:46
PerlJam TDD is about creating tests that test the features you want to implement before you implement them. If you don't have a representative test suite then you aren't doing TDD
mncharity thanks all. thanks pm.
18:46 mncharity left
pugs_svn r26059 | szabgab++ | fix link titles, add link to Padre::Plugin::Perl6 18:47
18:48 payload joined
ruoso PerlJam, the problem is when the tests only cover a small fraction of the features, and you write something targetting the incomplete test suite... 19:04
instead of targetting the actual features...
using the test suite as validation
pmurias ruoso: is it possible to create shared libraries which automatically import other shared libraries 19:08
?
ruoso you mean shared libraries that are linked with other shared libraries?
pmurias yrd
* yes
ruoso yes it is 19:09
19:09 dKingston left, dKingston joined
pmurias ruoso: how can we do it? i'm working on re-mildew and hard coding all the shared libs is tedious 19:10
ruoso well, maybe you can have a libmildew in smop
that makes all the initializing
and links to all the libraries
but you just set the -lfoo as a linker parameter, as you would set when compiling a progra 19:11
moritz_ szabgab: actually I'd prefer it if you got your blog into planetsix, to reduce the number of links on perl6-projects.org 19:12
szabgab I asked [email@hidden.address] a week or two ago to add it there 19:13
19:14 barney left
szabgab maybe if you asked it would be more successful 19:14
moritz_ I'll try
szabgab thanks
this is the feed: szabgab.com/blog/Perl%206.rss 19:15
20:50 ilogger2 joined
pmurias ruoso: i'm removing the an object with a NULL RI is it's own RI hack 20:50
renormalist pugs: [1,2].map: { $_ + 1 } 20:53
p6eval pugs: ( no output )
renormalist pugs: [1,2].map: { $_ + 1 }.say
p6eval pugs: OUTPUTĀ«23ā¤Ā»
renormalist pugs: ([1,2].map: { $_ + 1 }).say
p6eval pugs: OUTPUTĀ«23ā¤Ā»
21:04 sri_kraih_ joined 21:05 PZt joined 21:07 M_o_C joined
renormalist pugs: (["aaa","bbb"].map: { "(" ~ $_ ~ ")" }) 21:10
p6eval pugs: ( no output )
renormalist pugs: (["aaa","bbb"].map: { "(" ~ $_ ~ ")" }).say
p6eval pugs: OUTPUTĀ«(aaa)(bbb)ā¤Ā»
renormalist rakudo: (["aaa","bbb"].map: { "(" ~ $_ ~ ")" }).say
p6eval rakudo 1bf637: OUTPUTĀ«(aaa)(bbb)ā¤Ā»
renormalist rakudo: (["aaa","bbb"].map: { "(" ~ $_ ~ ")" }).perl 21:14
p6eval rakudo 1bf637: ( no output )
renormalist rakudo: (["aaa","bbb"].map: { "(" ~ $_ ~ ")" }).perl.say
p6eval rakudo 1bf637: OUTPUTĀ«["(aaa)", "(bbb)"]ā¤Ā»
renormalist pugs: (["aaa","bbb"].map: { "(" ~ $_ ~ ")" }).perl.say
p6eval pugs: OUTPUTĀ«("(aaa)", "(bbb)")ā¤Ā»
moritz_ perl6: (["aaa","bbb"].map: { "(" ~ $_ ~ ")" }).perl.say
p6eval pugs: OUTPUTĀ«("(aaa)", "(bbb)")ā¤Ā»
..rakudo 1bf637: OUTPUTĀ«["(aaa)", "(bbb)"]ā¤Ā»
..elf 26060: OUTPUTĀ«Use of uninitialized value in subroutine entry at ./elf_h line 197.ā¤Can't use string ("") as a subroutine ref while "strict refs" in use at ./elf_h line 197.ā¤ at ./elf_h line 5881ā¤Ā»
21:15 bacek left
cspencer moritz: so that Range patch i'd sent in... 21:17
it seems to build and test okay on OS X, which is what i'd created it on
though it doesn't work properly on Linux
which is presumably what you'd tested it on :) 21:18
sorry about that
moritz_ cspencer: actually I might have forgotten a realclean 21:19
cspencer hmmm
i'll rebuild on linux again, but i think you're right
moritz_ or maybe I remebered clean, but forgot to reconfigure ;-) 21:20
anyway, I'll try again now
git-am++
it's so easy, 'git am -s $patch', I don't even have to fiddle with patch's -p option ;-) 21:21
pugs_svn r26061 | pmurias++ | [m0ld] () and not [()] should be used as the unit type
moritz_ cspencer: it gets past the offending test now 21:22
cspencer the realclean did it?
whew
moritz_ cspencer: if the smoke is clean, I'll push it
clean + configure
sorry for the noise :/
cspencer no problem, i thought i'd totally missed something late last night :) 21:23
hmmm...still failing on some for me 21:24
21:24 dKingston joined
cspencer though perhaps i just needed to use --gen-parrot to pull the latest 21:25
moritz_ 'make parrot' also does that
cspencer ah, ok
pugs_svn r26062 | pmurias++ | [re-smop] removed the NULL RI hack entirely
cspencer i wasn't aware of that make option
moritz_ cspencer: nopaste.snit.ch/16073 that's what I use on p6eval's server for rebuilding rakudo 21:27
so far it was very reliable
cspencer great, thanks :) 21:28
moritz_ you won't need the update-revision thing
21:29 sri_kraih_ left 21:31 mncharity joined
mncharity TimToady: I just heard you were down the street yesterday. Bummer. If you are still around Bos and would like to chat, I'm logistically flexible. 21:33
announcement was even in my inbox. sigh. 21:34
moritz_ rakudo's smoke sometimes leaves a temp file tempfile_filehandles_io.. in the main directory 21:36
that's generated by t/spec/S16-filehandles/io.t
but whenever I run that script separately it nicely cleans up after itself
any idea what might go wrong?
21:37 sri_kraih joined
mncharity hmm, s/yesterday/day before $&/. still, big sigh. 21:37
21:37 sri_kraih left 21:51 Cybera_away joined 21:52 Cybera_away is now known as Cybera
jnthn Report for today: use.perl.org/~JonathanWorthington/journal/38741 21:54
cspencer moritz: did make spectest give you any problems after the make realclean? 21:59
moritz_ cspencer: no, works fiine 22:00
cspencer ok, whew :)
moritz_ cspencer: just reviewed another patch, pushing now 22:01
cspencer great, thanks!
22:02 Limbic_Region joined, ashizawa joined
pmichaud I was thinking that we should change Range to be a complete class definition, instead of 'is also' 22:03
dalek kudo: 913094f | (Moritz Lenz)++ | docs/compiler_overview.pod:
[docs] extend compiler_overview.pod
22:04
cspencer pmichaud: i'm working on moving the rest of the class over right now
moritz_ uhm, why didn't dalek report 2752e0e62e6eb7479c35e763f69dbffa934fbd3c 22:05
anyway, cspencer++
pmichaud cspencer++ # moving rest of class to settings 22:16
pasteling "mncharity" at 98.216.110.149 pasted "Perl 6 project Elf - 2009 Q1 status report [DRAFT-0]" (131 lines, 6.4K) at sial.org/pbot/35829
pmichaud I'd start by getting rid of the 'is also', and the class creation in src/classes/Range.pir
mncharity Comments encouraged. 22:17
Tene ack, where is purl? 22:21
TimToady: is $s different from $Åæ ? 22:22
PerlJam Tene: it looks different to me. 22:23
mncharity I, personally, could be doing so much more with elf. But I'm completely burned out on the whole 'no colleagues, collaborators, or clients' thing. Way beyond not -Ofun.
ah well
PerlJam mncharity: Hmm. Why is rakudo and other implementations gaining community but elf languishes? 22:25
moritz_ I have an idea about that
(currently on phone, will write more in 5min)
mncharity what implementation is gaining community? rakudo seems about steady state ~5(?)ish active developers. smop stable at 2. STD at 1. ? 22:26
/me looks forward to idea 22:27
jnthn mncharity: Rakudo didn't *start* with ~Nish active developers, however many we can count as avtive now.
moritz_ mncharity: first of all, very nice and accurate writeup 22:28
(back from phone)
jnthn For my part, Perl 6 on Parrot is a lot older than the maybe 18 months I've been working on it. 22:29
mncharity jnthn: hmm. pm, jnthn, moritz, ... I'm missing some, on rakudo side, allison, chrom, I'm blanking on someone's name, others(?) rakudo side. who is new?
moritz_ mncharity: I think what's really missing are public, not too technical blog posts and status reports, showing off achievements
mncharity: we just invited cspencer++ today ;-)
mncharity s/rakudo side<period>/parrot side/
moritz_ (to rakudo, that is)
mncharity the cspencer attraction mechanism was public, not too technical blog posts? 22:30
moritz_ don't know exactly, but we got lots of contributions after the "builtins can now be written in Perl 6" post 22:31
jnthn A lot of the blog posts about Rakudo show code that couldn't be run before that with latest work can be.
Tene PerlJam: the issue is whether Perl 6 normalizes compatibility equivalence in addition to canonical equivalence. 22:32
mncharity surfs parrot git, listens...
s//rakudo 22:33
PerlJam mncharity: I tend to count things like adding perl6 to padre and writing a newsletter about perl 6 tips and tricks as part of the rakudo-effect :-) 22:34
jnthn It's for sure that time has been spent by people working on Rakudo, or writing code to run on Rakudo, to tell others about what is going on, and quite often.
Another thing is that I imagine people who want to get involved with developing Perl 6 will be doing so at least partly because they want a completed Perl 6 implementation. 22:36
22:37 skids joined
jnthn And I suspect that contributing to one that is further along and is being talked about more is kinda more motivating. 22:37
wayland76 I have a question 22:38
Is there any reason that elf couldn't be used as the Perl6 prelude
s/prelude/setting/
which would kinda merge it with rakudo and/or smop?
moritz_ nopaste.snit.ch/16074 # commits to rakudo in the past days (by contributor, not commiter)
wayland76: probably there's a mismatch between the subsets of Perl 6 used by elf and provided by rakudo and/or smop 22:39
wayland76 ok, that's a reason they can't be merged now. But as the subsets increase, is there a reason it couldn't be done later? 22:40
PerlJam wayland76: you could, but why add another tool to the toolchain if the ones you already have are working just fine?
jnthn I think that a common prelude that implementations choose to diverge from a little in the places they need to is a good goal.
mncharity back, 22:41
wayland76 Ok. Is there any reason we couldn't morph the elf project into that?
(with mncharity's permission, of course)
My thought is, people are probably currently picking the Perl6 implementation they think has the most chance of being useful, and helping with that 22:42
moritz_ wayland76: note that elf is much more than a prelude/setting... but that part might be merged, yes
wayland76 If elf and rakudo were working together, maybe there would be more contributors :)
mncharity wayland76: elf could scavange rakudo settings code, but it uses much more of the language, so there's not much gain beyond (the very non-trivial) having executable spec. the non-primitive elf prelude, such as it is, could probably be dumped into rakudo as is. and elf will eventually be able to run on rakudo, though 22:43
once rakudo is capable of running elf, it's not the current elf code you want to run, but elf next-generation X, using multimethods, named arguments, etc. 22:44
22:44 Khisanth joined
wayland76 I don't understand the setting well enough to understand what you ( mncharity ) wrote :) 22:44
PerlJam wayland76: and *that* is the problem with elf ;) 22:45
mncharity rakudo, the last time I checked, was unusably slow to compile even the files it might have understood. so an elf-sized project on rakudo would need more fragmentation and build infrastructure than elf has at present. it's almost certainly a "wait for later" kind of thing.
22:45 payload joined
skids jnthn: Q:PIR{ $P0 = find_lex 'blah' $S0 = $P0 } <-- $S0 is a copy. Any way to get something suitable to pass to rw substr_r? 22:46
mncharity PerlJam: ?
moritz_ skids: I don't think a String ($S0) can ever be an rw 22:47
wayland76 mncharity: He's saying that my lack of understanding is preventing there being more contributors
PerlJam mncharity: I think elf isn't "more popular" because there aren't enough people who understand it or the direction it's heading.
wayland76 Let me ask a different question -- what else does Rakudo need in the way of features to be able to run elf?
PerlJam wayland76: yep, it's all your fault.
skids moritz_: proto for rw substr is (inout STR, in INT, in INT, in STR) so I would assume... 22:48
pugs_svn r26063 | moritz++ | [S32/Str] spec Str.trim()
moritz_ skids: yes, but a variable containing a string is a PMC on parrot level 22:49
wayland76 (I ask because I think elf-on-rakudo is a worthy goal :) )
mncharity actually, I don't think there's any elf prelude that isn't either primitive, or likely already existant as PIR. so no scavanging from elf for rakudo's setting. ;)
moritz_ skids: (at least that's my limited understanding)
PerlJam mncharity: your "unusably slow" comment makes me think we should be publishing stats like "compiles N lines per second" for rakudo :)
22:49 payload1 joined
mncharity re stats, could be. There's always perlcabal.org/svn/pugs/view/misc/el...1_Nodes.pm . ;) 22:51
wayland76 What does IR stand for?
moritz_ intermediate representation 22:53
mncharity hmm, though I don't know if it's spec to refer to a class X as package X.
and then there's the whole 'extend' cruftiness.
skids moritz_: /src/builtins/any-str.pir line 93, assuming my file is fresh.
Problem is in inline PIR you can't I think get what the param types in that PIR sub give you -- an actual reference to the string rather than a copy.
moritz_ that's in .sub ':d' :method
mncharity rakudo: class A { method bark { say "bow"; self} }; class A { method ouch { say "ow"; } }; A.new.bark.ouch; 22:54
p6eval rakudo 913094: OUTPUTĀ«Re-declaration of type A at line 1, near "; A.new.b"ā¤ā¤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)ā¤Ā»
mncharity wayland76: but the main point is, if rakudo would run elf, elf wouldn't be interesting. Some other body of code implimenting a p6 compiler would be, but it wouldn't have any more than a spiritual connection with elf. 22:55
s/would/could/
sigh
skids moritz_: haha that was the line number off my grep :-) hold on.
mncharity wayland76: but the main point is, if rakudo could run elf, elf wouldn't be interesting. Some other body of code implimenting a p6 compiler would be, but it wouldn't have any more than a spiritual connection with elf. 22:56
skids slaps self
moritz: line 818 "substr result, pos, substringlen, replacement" 22:57
ruoso mncharity, I'd be happy enough if we manage to get an standard API in things like ClassHOW, RoleHOW
wayland76 mncharity: Ok. I have a slightly better grip on elf now, and see why that's so.
ruoso and maybe even a REPR API
skids ".param string replacement"
mncharity elf exists because rakudo can not as yet run anything like elf. or couldn't. as long as rakudo/parrot doesn't die, that's always been something that would change at some point, modulo performance.
skids erm, I mean ".local string self" 22:58
erm, I should just stop trying to type today ".local string result" 22:59
moritz_ skids: sorry, I can't follow you, but that's probably because it's 1am here and I need sleep... if nobody can help you here, maybe send a mail to p6c 23:01
mncharity once rakudo can run something like elf, then one writes in it the p6 equivalent of rubinius or pypy, and backends for CL, javascript, etc, etc (again, as with ruby, and python, and lua, and etc.
skids moritz_: I'm not making terribly coherent sense anyway :-)
And it isn't even 1am here :-)
moritz_ off to sleep & 23:02
23:02 justatheory joined
mncharity but rakudo has improved a lot. setting github.com/rakudo/rakudo/tree/91309...rc/setting is notable. it's getting up towards pugs's perlcabal.org/svn/pugs/view/src/perl6/Prelude.pm . 23:03
23:03 bacek_ joined
mncharity and its appreciated. :) no more puzzled "why would you want to write anything in p6, rather than pir?" 23:04
23:04 bacek joined
wayland76 :) 23:05
mncharity g'night moritz_ 23:06
wayland76 Anyway, I should probably have some breakfast :) 23:07
goodnight moritz_
mncharity thanks for the questions
23:08 payload left 23:10 bacek left
mncharity moritz_: re 'public, not too technical blog posts', the thing is, what elf really needs is one or more good compiler writers. the lowest skill level that would help elf is probably prelude, s//setting/, documentation and implementation. so it's not clear to me non-technical posts would help with that. 23:11
hmm, that's something which should go in the note. 23:12
Tene what's the motivation for someone to work on elf instead of rakudo? 23:15
mncharity just now pondering that
more the underlying 'what elf provides vs rakudo', than the human motivation issue 23:16
23:17 M_o_C left
Tene sound like you were saying that you needed human motivation. 23:17
mncharity rakudo isn't currently set up for alternate backends. so what parrot doesn't provide, rakudo can't have.
re sound like..., true, but it helps to separate the 'why would one logically want to' from the 'wanting to'. politicians and salesmen reorder those two, but for engineers... ;) 23:18
... can't have. so, for instance, the lexical stuff from the Fall which pm finally dealt with (me gropes over fuzzy memory), or the argument passing now. there have repeatedly been order-year+ size limitations on what rakudo could do, created by parrot limitations. 23:20
in contrast, surface capabilities at least are easier to deal with in elf. that's not going to get you smop-like deep oo substructure compliance, but is fine for "I need named arguments and I need them fast". Well, only Moose fast on elfp5. elfcl could do true fast. 23:22
jnthn You've picked two issues where Parrot didn't help Rakudo and ignored the tens where it provided what was needed. 23:24
mncharity I don't know how well rakudo is set up to do IR analysis. My impression is it's mostly direct-to-pir, rather than groveling over the non-local meaning of p6 code. so that might be easier in elf.
jnthn Or provided something that was good enough for the time being.
Tene IR analysis? 23:25
jnthn (example: we just used Parrot's own multi-dispatch support to get us running the test harness, so we didn't have to plug in our own until later, and so forth)
mncharity jnthn, the question I'm pondering is 'in light of rakudo's current capabilities, what role if any is there for elf'. being able to avoid the constraints of parrot is one such. how much parrot helps, doesn't quite bare on the particular question.
jnthn You talk as if Parrot is this thing the Rakudo developers have no influence over. 23:26
Sure, *everyone* working on Rakudo knows Parrot has its weaknesses. 23:27
However, a bunch of them that used to exist, no longer do. 23:28
mncharity hmm. perhaps it's a "what's the goal" divergence again. my understanding is there have been things that have been blockers for non-small scale use of rakudo, due to parrot issues, which have persisted for year-sized timescales, despite repeated discussion by rakudo developers. that suggests 23:29
Tene mncharity: cut off after (that suggests...) 23:30
mncharity at a minimum that fixing it was harder than the discussion (which with elf might actually not be the case), even if fixing them rapidly was not seen as an issue since getting to non-small scale use isn't where rakudo's focus is.
no? 23:31
jnthn Fixing bugs usually is harder than talking about them. ;-) 23:32
In reality, some are a bigger deal than others.
The lexicals stuff got to the point where it really was blocking people from doing much with Rakudo, at which point a bunch of time was put into it and at that point the time scale was not years at all. 23:33
OTOH, Parrot hasn't provided the ability to pass positional parameters as named directly, though I don't really see that as something hugely getting in the way of people wanting to use Rakudo to write programs. 23:34
mncharity re "Fixing bugs usually is harder than talking about them.", especially when you're working in C rather than p5, PIR rather than lisp. ;)
jnthn *sigh*
OK, I give up. 23:35
mncharity ?
jnthn Sorry, but it feels like there's little I can say that you're going to agree with.
mncharity Tene: re IR analysis?, 23:36
hmm...
mncharity goes back to look at what was said but not agreed with...
Tene mncharity: I think jnthn is mostly saying "What you're asking about doesn't seem correct from my experience working with rakudo"
jnthn Rakudo by now implements a bunch of stuff stably, and with tests to make sure it keeps working, and it does a bunch of stuff that no other implementation I'm aware of is capable too. 23:37
mncharity agreed. 23:38
:)
jnthn :-)
tbh, I think our major difference is that I see Parrot as something that makes a bunch of stuff possible, whereas it feels your viewpoint is that it gets in the way more than it helps. 23:39
skids If anyone cares, I don't mind writing PIR at all, I don't see that as the blocker -- lots of people are trying their hand. But understanding Parrot is another matter -- not much in the way of "this is how we handle stacks" just pointers to generic articles about how great continuations are. 23:40
My blocker for digging in is time to understand it by reading the whole source and wrapping my head around it, which really should not be necessary. 23:41
mncharity I suggest the following, "there exists a set of features X, which rakudo doesn't have because parrot currently makes it difficult" and "some subset of them have the property that they would be straightforward to implement in elf".
that goes to the problem which existed with pugs, of
jnthn skids: Oh, how I wish just reading the source gave understanding. ;-) 23:42
skids hehe :-)
And, a lot of the comments that should help you understand it are stale or just "TODO: comment this" 23:43
mncharity ...of pugsbugs and things not yet implemented creating an impenetrable maze preventing non-small scale usage.
Tene mncharity: rakudo development is tied to parrot development. Parrot isn't this mysterious impenetrable black box... 23:44
jnthn I imagine though that we can swap around elf and rakudo there, though. 23:45
skids Tene: but it is at least viscous and brown.
jnthn For a different set of features, obviously.
mncharity my observation is the smaller and more limited but more malleable elf tends to have the property of being able to bulldoze holes through that maze when one needs too. but again, that capability isn't something that's seemed to be a priority for rakudo. but in determining whether
jnthn skids: Parts of Parrot could do with an order of magnitude more comments, for sure...
mncharity elf still has a role, since that was a key focus of elf, it is of significance. 23:46
jnthn It seems your premise with elf - correct me if I'm wrong - is that if some set of features are known to be implemented and stable, you can write software using them and trust that it won't break. 23:47
mncharity yes and no,
jnthn However, you could probably pick such a set of features from Rakudo that are well tested and have been stable for a while, restrict yourself to those, and get the same outcome, no? 23:48
mncharity no, let's see... 23:49
the premise of elf is (1) we are only going to get to Xmas with large scale p6 development. both setting, and compiler core. (2) there is no existing implementation in which one can do large scale p6 development. (3) it is possible to create an implementation on which one can do large scale development if you make that your design focus. 23:52
that means,
both the speed for p6 development to be at least plausible, ideally pleasant, day in and day out. sufficient p6 oo to be not stuck in ruby/python land (mostly multi dispatch). and sufficient transparency and malleability that one doesn't "get stuck" or spend one's life trying to work around bugs. 23:56
jnthn I don't think the compiler has to be written entirely in Perl 6, though Rakudo already partly is. Also, with the Perl 6 setting we increasingly have that in Perl 6 too. 23:59
I'd like to hear "large scale" defined though.