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. |