»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo:, alpha:, pugs:, std:, or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend! Set by lichtkind on 5 March 2010. |
|||
00:02
REPLeffect left,
[particle] left
00:04
ciphertext joined,
pnate left,
patspam left
00:20
yinyin joined
00:21
Khisanth joined
00:27
whiteknight joined
00:28
davidm123 joined
00:31
masonkramer left,
masonkramer joined
|
|||
davidm123 | has use, require, and specifically "use lib" been changed in perl 6? where might I find the official API on them? | 00:33 | |
00:37
jhuni joined
|
|||
Tene | davidm123: perlcabal.org/syn/S11.html#Compile-...mportation | 00:37 | |
00:45
snarkyboojum joined
|
|||
davidm123 | thanks Tene. the more specific question I'm after is whether "use lib 'foo'" alters the global program state or just the state of the current lexical scope. | 00:46 | |
i've found Load.pm in rakudo. it has my @inc := pir::get_hll_global__PS('@INC'); | 00:47 | ||
sorear | it /should/ be the current lexical scope | ||
davidm123 | Loader.pm that is | ||
sorear | but no compiler implements this yet | ||
davidm123 | oh. lexical is what I was thinking it should be. | ||
is there is reference somewhere that says that is what it should be? | 00:48 | ||
sorear | probably not | ||
dalek | kudo: e22e80f | (Solomon Foster)++ | src/core/ (2 files): Tidy up Numeric and Real. |
||
sorear | don't trust what any compiler does; they all cheat, a lot | 00:49 | |
Tene | it's there on the link I just gave you, the first non-parenthetical statement | ||
"Importing via use binds into the current lexical scope by default (rather than the current package, as in Perl 5)." | |||
"The importation into your lexical scope may also be a separate declaration from loading. This is primarily useful for modules declared inline, which do not automatically get imported into their surrounding scope:" | 00:50 | ||
sorear | S11 doesn't say anything about "use lib" | ||
Tene | "Importing via require also installs names into the current lexical scope by default, but delays the actual binding till runtime:" | ||
sorear | in principle, use lib 'foo' should be the same as constant @?INC ::= "foo", OUTER::<@?INC>; | ||
davidm123 | Tene, understood, but my concern was instead whether the search path (@INC) value is lexically scoped. | 00:51 | |
Tene | ahh | ||
I misunderstood, sorry | |||
sorear | which is kinda like BEGIN { my @*INC ::= "foo", CALLER::<@*INC> } except that the my scopes over the enclosing lexical scope and isn't limited to the BEGIN | ||
00:53
Schwern left
|
|||
davidm123 | what does "CALLER::<@*INC>" do? does that somehow prevent things like "use lib foo; use bar" from affecting the include path inside the implementation of package "bar" ? | 00:54 | |
sorear | @*INC is the newly declared variable | 00:55 | |
CALLER::<@*INC> is required to see the old value | |||
preventing the implementation of "bar" from being affected is an entirely different problem (and the reason why the @* version is not quite the same as the @? version) | 00:56 | ||
01:10
TiMBuS joined
01:19
snarkyboojum left
01:23
jaffa4 left
01:40
Visitor99 joined
|
|||
Visitor99 | hello.. i was looking at the perl6 book mentioned on planetsix... in some examples there is a '¿' character.... i was wondering... what's that symbol for ? | 01:41 | |
sjohnson | my guess is it allows you to do use that instead of ? for Spanish-speaking Perl coders | 01:42 | |
colomon | my guess is some sort of error in the LaTeX encoding. | ||
Visitor99 | ahh i guessed so.. i just wanted to be sure... thanks :) | 01:43 | |
this is the exampls: my %moves = hands-over-head =¿ sub { $dance ∼= | |||
’/o\ ’ } | |||
colomon | yeah, that definitely looks like an error. | 01:45 | |
sorear | TimToady: azawawi, who maintains the Padre/STD integration, has requested a pure Perl builder for STD.pmc. Where do you stand? | 01:46 | |
TimToady | there are many ways to improve on make, and probably even more ways to reinvent it poorly :) | 01:52 | |
lue | .oO(curse you, tvtropes. curse you.) |
01:53 | |
01:54
agentzh joined
01:57
vapace_ joined
02:01
[particle] joined
02:03
vapace_ left
02:05
SmokeMachine left
02:06
szabgabx_ joined,
eternaleye joined
02:10
szabgabx left
02:16
vapace_ joined
02:21
vapace_ left
|
|||
dalek | kudo: 20a512b | (Solomon Foster)++ | src/core/ (2 files): Tidy Int and Rat. |
02:32 | |
kudo: 006bdf0 | (Solomon Foster)++ | src/core/ (2 files): Move Num operators from Real.pm to Num.pm. |
|||
02:35
vapace_ joined
|
|||
dukeleto | is there something like File::Spec for rakudo? | 02:36 | |
02:47
Bzek_ joined
02:51
Bzek left
02:58
jaldhar joined
03:03
whiteknight left
03:04
vapace_ left,
envi^home joined
03:05
ash__ left
|
|||
dukeleto | msg pmichaud i made a new patch that does not require Test::Harness 3.x and uses run() from a Rakudo test : rt.perl.org/rt3/Ticket/Display.html?id=75650 | 03:18 | |
03:18
vapace_ joined
03:23
yinyin left
03:24
yinyin joined,
ash__ joined
03:27
Schwern joined
03:30
[particle] left,
meppl left,
felipe left,
ingy left,
opx^away left,
Gothmog_ left,
tomaw left
03:31
Chillance left
03:32
Chillance joined
03:39
[particle] joined,
meppl joined,
ingy joined,
opx^away joined,
Gothmog_ joined,
tomaw joined
03:42
pnate joined
03:43
meppel joined
03:47
meppl left
04:00
davidm123 left
04:25
ciphertext left,
ciphertext joined
04:33
felipe joined,
tedv left
04:36
Visitor99 left
04:42
vapace_ left
|
|||
szabgabx_ | rakudo: (1,2 X 4,7).perl | 04:51 | |
p6eval | rakudo 006bdf: ( no output ) | ||
szabgabx_ | rakudo: say (1,2 X 4,7).perl | 04:52 | |
p6eval | rakudo 006bdf: OUTPUT«(1, 4, 1, 7, 2, 4, 2, 7)» | ||
szabgabx_ | rakudo: my @x = 1, 2 X 4, 7; say @x.perl | ||
p6eval | rakudo 006bdf: OUTPUT«[(1, 4), (1, 7), (2, 4), (2, 7)]» | ||
szabgabx_ | I am not sure why the difference? | 04:53 | |
04:53
szabgabx_ is now known as szabgabx
04:56
justatheory left
|
|||
szabgabx | rakudo: for 1..5 -> $x, $y? { say "$x $y" } | 05:00 | |
p6eval | rakudo 006bdf: OUTPUT«1 Any()2 Any()3 Any()4 Any()5 Any()» | ||
05:00
Chillance left
|
|||
szabgabx | rakudo: for 1..5 -> $x, $y { say "$x $y" } | 05:00 | |
p6eval | rakudo 006bdf: OUTPUT«1 23 4StopIteration in main program body at line 11:/tmp/ApQ7UT0NzB» | ||
szabgabx | rakudo: for 1..5 -> $x, $y? { say $x; say $y } | ||
p6eval | rakudo 006bdf: OUTPUT«1Any()2Any()3Any()4Any()5Any()» | ||
sorear | szabgabx: handling of lists with nested parcels is known to be broken. don't trust anything rakudo says | 05:04 | |
szabgabx | I just ran the test of my slides | 05:07 | |
05:07
sorear left
|
|||
szabgabx | and this failed | 05:07 | |
05:07
sorear joined
|
|||
szabgabx | rakudo: for 1,2 Z 3,4 -> $x, $y { say "$x $y" } | 05:10 | |
p6eval | rakudo 006bdf: OUTPUT«1 32 4» | 05:11 | |
szabgabx | rakudo: for 1,2 Z 3,4 Z 5,6-> $x, $y, $z { say "$x $y $z" } | ||
p6eval | rakudo 006bdf: OUTPUT«===SORRY!===Unsupported use of -> as postfix; in Perl 6 please use either . to call a method, or whitespace to delimit a pointy block at line 11, near " $x, $y, $"» | ||
szabgabx | rakudo: for 1,2 Z 3,4 Z 5,6 -> $x, $y, $z { say "$x $y $z" } | ||
p6eval | rakudo 006bdf: OUTPUT«No applicable candidates found to dispatch to for 'infix:<Z>'. Available candidates are::():(Iterable $a-iterable, Iterable $b-iterable):(Any $a, Any $b) in main program body at line 11:/tmp/qeBbFjjJUQ» | ||
sorear | szabgabx: handling of lists with nested parcels is known to be broken. don't trust anything rakudo says | 05:21 | |
szabgabx | so its still the same bug :) | 05:31 | |
I just found something that changed in the grammar engine | |||
I'll post it later | |||
to see if it was correct earlier or now | 05:32 | ||
rakudo: my %xml; %xml<people> = []; %xml<people>[0] = {} | 05:35 | ||
p6eval | rakudo 006bdf: OUTPUT«Null PMC access in invoke() in main program body at line 1» | ||
05:36
orafu left
05:37
orafu joined
|
|||
sorear | autoviv doesn't work either | 05:38 | |
szabgabx | that i not autoviv as I understand | 05:40 | |
that code was written to avoid the need for autovivification | |||
but now even the work around is broken | 05:41 | ||
elems() is not exported any more? | 05:42 | ||
sorear | [0] is causing an autovivification, iirc | ||
szabgabx | rakudo: my %xml; %xml<people> = []; say %xml<people>; | 05:43 | |
p6eval | rakudo 006bdf: OUTPUT«» | ||
szabgabx | rakudo: my %xml; %xml<people> = []; say %xml<people>.WHAT; | ||
p6eval | rakudo 006bdf: OUTPUT«Array()» | ||
szabgabx | rakudo: my %xml; %xml<people> = []; say %xml.perl; | ||
p6eval | rakudo 006bdf: OUTPUT«{"people" => []}» | 05:44 | |
szabgabx | rakudo: "a,b,c".split(',').perl.say; | 05:45 | |
p6eval | rakudo 006bdf: OUTPUT«("a", "b", "c")» | ||
szabgabx | this used to be ["a", "b", "c"] | ||
sorear | and...? | 05:53 | |
06:02
cognominal joined
|
|||
cognominal | hello from Calais. | 06:02 | |
sorear | Hello to cognominal. | 06:04 | |
pugssvn | r31198 | sorear++ | [STD-ecosystem] Introduce a new bootstrapping paradigm. Most makefile targets not yet ported. | 06:09 | |
jnthn | o/ from Kiev :-) | 06:11 | |
06:11
Guest59148 left
06:15
[particle] left,
JimmyZ joined
|
|||
sorear hasn't moved at all since March... | 06:19 | ||
sometimes I feel weird for having a permanent residence | 06:20 | ||
cognominal | mberends says hello too | ||
mberends did very well with jnthn slides. | 06:21 | ||
jnthn | mberends++ :-) | 06:23 | |
OK, /me -> venue | 06:24 | ||
06:24
szabgabx left
06:29
kensanata joined
06:30
eternaleye left
06:31
eternaleye joined
06:37
kaare joined,
kaare is now known as Guest55077
06:44
kensanata left,
jaldhar left
06:45
jaldhar joined
|
|||
pugssvn | r31199 | sorear++ | [STD-eco] Add STD_P5 build capability (under 'all' but not default) | 06:46 | |
r31200 | sorear++ | [STDeco] Add a clean target | 06:48 | ||
06:48
jaldhar left
06:49
jaldhar joined
|
|||
pugssvn | r31201 | sorear++ | [STDeco] Remove CORE.pad & boot, no longer used; add empty stage[12] dirs | 06:51 | |
07:06
alanhaggai joined
|
|||
sorear | yay, I have the three-stage STD bootstrap up to 16m12s | 07:20 | |
dalek | kudo: 8fc1ef5 | dukeleto++ | (3 files): Add test for loading perl6.pbc bytecode |
07:41 | |
moritz_ | phenny: tell masak that in trunk t/spec/S32-str/encode.rakudo fails one test. Merging time? | 07:46 | |
phenny | moritz_: I'll pass that on when masak is around. | ||
07:48
cognominal left
|
|||
pugssvn | r31202 | sorear++ | [STD-eco] add stage3 and reboot targets | 07:57 | |
sorear | all the new Makefile is missing at this point is snaptest | 07:58 | |
and STD.pm5 | 07:59 | ||
08:00
cono joined
|
|||
cono | Hello every1 from yapc::russia :) | 08:00 | |
sorear | Hello! | ||
moritz_ | \o/ | ||
cono | jnthn: let's rock rakudo ;) | ||
jnthn | :-) | 08:01 | |
I just broked my Rakudo build. D'oh. | |||
cono | ;( | ||
sorear starts a test of snaptest (the irony) and ->sleep | 08:02 | ||
that'll be 16 min before it can even start testing | |||
moritz_ | if you want to rock rakudo, git pull, build the latest und run 'make stresstest' | ||
:-) | |||
08:02
xabbu42 joined
|
|||
moritz_ | just pushed the new stresstest target | 08:02 | |
cono | no way ;P | 08:03 | |
jnthn | Oh, we have stresstest now? :-) | ||
moritz_ | 'twas a SMOP | ||
cono | make: *** No rule to make target `stresstest'. Stop. | ||
sorear | stress? that's like spec, but with -j512? | 08:04 | |
moritz_ | cono: git pull, and reconfigure | ||
cono | you are fast ;) | ||
moritz_ | sorear: it's currently only t/spec/integration/advent2009-day17.t, which takes 5 minutes on my machine | ||
dalek | kudo: a63c7e0 | moritz++ | (4 files): add stresstest target, and move day 17 of the advent tests to stresstest |
||
sorear | mandel? | 08:05 | |
moritz_ | right | ||
jnthn | yeah, think so | ||
sorear off for real | |||
jnthn | It took ages on my machine too | ||
night sorear o// | |||
oops, network lag doubles arms. | |||
moritz_ | need to talk to colomon if tanh.t should also be in stresstest | ||
cono | why can't do %*ENV.perl.say ? | ||
I* | 08:06 | ||
moritz_ | rakudo: say %*ENV.perl | ||
p6eval | rakudo 006bdf: OUTPUT«Method 'key' not found for invocant of class 'String' in 'Any::join' at line 4309:CORE.setting in 'EnumMap::perl' at line 4332:CORE.setting in main program body at line 11:/tmp/CP5Sj0JxRZ» | ||
jnthn | rakudo: say %*ENV.perl | ||
p6eval | rakudo 006bdf: OUTPUT«Method 'key' not found for invocant of class 'String' in 'Any::join' at line 4309:CORE.setting in 'EnumMap::perl' at line 4332:CORE.setting in main program body at line 11:/tmp/y5reg5X2Ef» | ||
jnthn | ...ew. | ||
moritz_ | cono: seems it's not a proper Perl 6 hash, but a parrot hash :( | ||
cono | :( | ||
jnthn | moritz_: I thought it was a Parrot hash wrappd in a Perl 6 one... | ||
moritz_ | env = root_new ['parrot';'Env'] | 08:07 | |
$P2 = '&CREATE_HASH_LOW_LEVEL'(env) | |||
set_hll_global '%ENV', $P2 | |||
jnthn | Yeah, that wraps it in a Perl 6 hash. | ||
Maybe it leaks somehow. | |||
moritz_ | jnthn: any objections to renaming it to CREATE_HASH_FROM_LOW_LEVEL | ||
? | |||
that sub name is mightily confusing | 08:08 | ||
jnthn | moritz_: Sure | ||
moritz_: As in, no objections. | |||
moritz_ | :-) | ||
does parrt;Env inherit from Hash? | 08:10 | ||
jnthn | moritz_: mabye | 08:11 | |
moritz_: Can check | 08:12 | ||
moritz_ | C<Env> is a singleton class which provides access to the system environment. | ||
XXX Think about returning Pair back. Currently there is no way to iterate over | |||
environment I<keys>. | |||
jnthn | moritz_: ah, no, it doesn't. | ||
08:12
szabgabx joined
|
|||
jnthn | OH | 08:12 | |
That's why it's busted. | |||
szabgabx | rakudo: say [*] 1..5; | ||
jnthn | grrrr | ||
p6eval | rakudo 006bdf: OUTPUT«120» | ||
moritz_ | rakudo: %*ENV.keys | 08:13 | |
p6eval | rakudo 006bdf: ( no output ) | ||
moritz_ | rakudo: say %*ENV.keys | ||
p6eval | rakudo 006bdf: OUTPUT«Method 'key' not found for invocant of class 'String' in 'say' at line 4309:CORE.setting in 'say' at line 4655:CORE.setting in main program body at line 11:/tmp/wXcXJUQv2r» | ||
jnthn | say %*ENV.keys | ||
szabgabx | hmm, that did not work for me, let me check | ||
still does not work | 08:14 | ||
was reduction fixed in the last few days? | |||
jnthn | szabgabx: Don't think it's changed in quite a while. | ||
moritz_ | don't think so | ||
08:14
xabbu42 left
|
|||
szabgabx | it tells me Could not find sub &prefix:<[*]> | 08:15 | |
with -e it worked | |||
oh, stupid me | 08:16 | ||
I probably redefined * by mistake | |||
moritz_ | "I accidentally the *" | 08:17 | |
szabgabx | I am not sure what happened earlier but once I closed the REPL and ran it again it started to work | ||
jnthn | heh | 08:18 | |
08:18
Ross joined
|
|||
jnthn | cono: Want to hack on a little Rakduo task? :-) | 08:19 | |
cono | jnthn: yup | ||
dalek | kudo: 5ad963b | moritz++ | src/ (5 files): s/CREATE_HASH_LOW_LEVEL/CREATE_HASH_FROM_LOW_LEVEL/ |
08:22 | |
kudo: edf0072 | moritz++ | t/harness: default to one test job at a time, due to complaints from avar++ and sorear++ |
|||
szabgabx | nopaste.voric.com/paste.php?f=7srjom | ||
08:24
szabgabx_ joined
|
|||
moritz_ | rakudo: sub infix:<rrr>($a, $b) { $a + 2* $b }; [rrr] 1,1,1; | 08:25 | |
p6eval | rakudo 006bdf: OUTPUT«===SORRY!===Could not find sub &infix:<rrr>» | ||
moritz_ | rakudo: our sub infix:<rrr>($a, $b) { $a + 2* $b }; [rrr] 1,1,1; | ||
p6eval | rakudo 006bdf: ( no output ) | 08:26 | |
moritz_ | rakudo: our sub infix:<rrr>($a, $b) { $a + 2* $b }; say [rrr] 1,1,1; | ||
p6eval | rakudo 006bdf: OUTPUT«5» | ||
08:26
szabgabx__ joined
|
|||
moritz_ | that's a bug/limitation in rakudo | 08:26 | |
08:26
szabgabx left
|
|||
szabgabx__ | bad wireless | 08:26 | |
moritz_ | but I don't understand why it affects [*] | ||
szabgabx__ | so if I understand I don't yet get the reduction operator for my own operators right? | 08:28 | |
I am not sure which one of the commands i gave killed the [*] | |||
but was a bit surprising | |||
moritz_ | in theory you get them if you declare it as 'our sub infix...' | 08:29 | |
ie put it in the symbol table | |||
08:29
szabgabx_ left
|
|||
szabgabx__ | oh, now I understand your example | 08:29 | |
great | |||
pugssvn | r31203 | colomon++ | [t/spec] Not clear to me why we were testing that Complex.sign returns something which is not defined rather than simply failing. As it was, it was forcing us to explicitly implement a Complex.sign function which threw an error, rather than just not have a Complex.sign | 08:32 | |
..function and let that generate an error naturally. (Why was Complex.sign tested this way, and not any of the other Real-only numeric functions?) At any rate, fudge out the test until things can be sorted out. | |||
08:33
alanhaggai left
|
|||
moritz_ | colomon: it was simply following a spec inconsistency | 08:37 | |
colomon | moritz_: where? | ||
moritz_ | colomon: in the auld S32-setting-library/Numeric.pod | ||
probably (hopefully) gone | 08:38 | ||
colomon | wait, are you thinking of the "returns [...] undefined when the value passed is undefined"? | ||
that's still there. (and also still an annoying inconsistency, IMO) | 08:39 | ||
this one is... | |||
rakudo: say 1i.sign | |||
p6eval | rakudo 006bdf: ( no output ) | ||
colomon | rakudo: say 1i.ceiling | ||
p6eval | rakudo 006bdf: OUTPUT«maximum recursion depth exceeded in 'Numeric' at line 2681:CORE.setting in 'Numeric' at line 2682:CORE.setting in 'Cool::ceiling' at line 5623:CORE.setting in 'Cool::ceiling' at line 1612:CORE.setting in 'Cool::ceiling' at line 1612:CORE.setting in 'Cool::ceiling' | ||
..at li… | |||
colomon | rakudo: say Int.sign | 08:41 | |
p6eval | rakudo 006bdf: OUTPUT«Mu()» | ||
colomon | rakudo: say Int.ceiling | ||
p6eval | rakudo 006bdf: OUTPUT«0» | ||
colomon | ack. | ||
08:47
whitechap joined
|
|||
colomon | rakudo: say "dfgskgjks".sign | 08:52 | |
p6eval | rakudo edf007: OUTPUT«0» | ||
colomon | okay, this needs more thought than I can give it at 4:53 AM | 08:53 | |
jnthn | extreme morning, colomon o/ | 09:01 | |
moritz_ | \o/ I have a very prototype-ish Callframe.pm working | 09:04 | |
jnthn | What was the pugscode commit bit url again? | 09:05 | |
moritz_ | it can return caller's line numbers and files | ||
commitbit.pugscode.org | |||
jnthn | thanks | 09:07 | |
09:09
meppel left
|
|||
szabgabx__ | rakudo: regex num { \d ** 1..3 }; say 10 ~~ m/ <num> /; | 09:09 | |
p6eval | rakudo edf007: OUTPUT«Useless declaration of has-scoped regex in a module; add our or my to install it in the lexpad or namespaceMethod 'num' not found for invocant of class 'Cursor' in <anon> at line 11:/tmp/hv5C0bgBsO in 'Cool::match' at line 2213:CORE.setting in 'Regex::ACCEPTS' at line | ||
..5004:C… | |||
szabgabx__ | rakudo: our regex num { \d ** 1..3 }; say 10 ~~ m/ <num> /; | 09:10 | |
09:10
[mark] joined
|
|||
p6eval | rakudo edf007: OUTPUT«Method 'num' not found for invocant of class 'Cursor' in <anon> at line 11:/tmp/0KCOUcnMXA in 'Cool::match' at line 2213:CORE.setting in 'Regex::ACCEPTS' at line 5004:CORE.setting in 'infix:<~~>' at line 351:CORE.setting in main program body at line | 09:10 | |
..11:/tmp/0KCOUcnMXA» | |||
szabgabx__ | how is that written now? | ||
09:11
radu__ joined
09:15
xabbu42 joined,
xabbu42_ joined,
xabbu42 left,
xabbu42_ is now known as xabbu42
|
|||
moritz_ | rakudo: my regex num { \d ** 1..3 }; say 10 ~~ / <&num> /; | 09:16 | |
p6eval | rakudo edf007: OUTPUT«10» | ||
moritz_ | though it *should* work with <num> too | ||
only it doesn't | |||
09:18
szabgabx__ left
|
|||
pugssvn | r31204 | cono++ | * Rakudo now recognized \e. Turn on '\e' tests (RT#75244) | 09:19 | |
moritz_ | cono++ | 09:20 | |
09:24
JimmyZ_ joined
09:26
JimmyZ left,
JimmyZ_ is now known as JimmyZ
|
|||
cono | moritz_: ty :) | 09:30 | |
!karma cono | |||
moritz_: We wanna make tests for TODO:S03 tests for cmp() and eqv() methods of objects, what objects should be tested? | 09:31 | ||
jnthn | @karma cono | 09:38 | |
buubot: karma cono | |||
buubot | jnthn: cono has karma of 2 | ||
jnthn | cono++ | ||
:-) | |||
cono | :D | ||
moritz_ | cono: arrays, hashes, numbers for a start | 09:39 | |
jnthn | moritz_: do we have those implemented? | ||
(the function verions)?? | |||
*versions | |||
rakudo: say cmp(1, 1) | |||
p6eval | rakudo edf007: OUTPUT«Could not find sub &cmp in main program body at line 11:/tmp/Q5gYlPs6cc» | ||
moritz_ | jnthn: no | 09:40 | |
jnthn | moritz_: Ah. What do they do, if you know? | ||
Just delegate to &infix:<cmp>? | |||
moritz_ | compare stuff :/ | ||
jnthn | meh | ||
moritz_ | jnthn: I guess it's the other way round | ||
jnthn | Oh. | ||
moritz_ | but I'm not sure | ||
jnthn | Yeah, makes some sense. | ||
Hmm | |||
Me either. :-) | |||
Since we dodn't know how it's meant to work, maybe it's not so easy to write tests for. :-/ | 09:41 | ||
moritz_ | you could read it up in the spec :-) | ||
dalek | kudo: aecd470 | moritz++ | (2 files): early, hacky implementation of callframe($level) and class CallFrame callframe().line # the current line callframe(1).line # caller's line callframe(1).file # caller's file |
09:43 | |
09:43
yinyin left
|
|||
jnthn | oh wow | 09:44 | |
moritz_++ | |||
moritz_ | it was actually quite simple | 09:45 | |
jnthn | :-) | 09:48 | |
dalek | kudo: 6fe0817 | (Vyacheslav Matjukhin)++ | src/core/Any-list.pm: #RT75626 - [TODO] Implement Any.all (and .any, .one, .none) in Rakudo |
||
moritz_ | I started it because I noticed I was going to re-invent it in PIR all over the compiler | 09:49 | |
jnthn | *nod* | ||
moritz_ | next: buying some fruits for the weekend; then, if my luck holds, CallFrame.my | ||
TimToady: what type does callframe().my return? | |||
09:50
ciphertext left
|
|||
pugssvn | r31205 | mmcleric++ | RT#75626 tests - Implement Any.all (and .any, .one, .none) in Rakudo | 09:50 | |
r31206 | jnthn++ | [t/spec] Unfudge two more attribute introspection tests that Rakudo can now pass. | 09:51 | ||
09:51
ciphertext joined
|
|||
dalek | kudo: 46e9ac2 | jonathan++ | src/ (3 files): Start to store attribute type constraints so we can introspect them. |
09:54 | |
09:56
mberends joined
|
|||
mberends | \o/ from Calais! (change FreeNode port from 8001 to 6667) | 09:56 | |
there is a possibility that Dancer may come to Perl 6 (perldancer.org) | 09:59 | ||
I've just helped the project leader Alexis Sukrieh get Rakudo installed on his netbook. It's so much like masak++'s Web.pm (cloning Sinatra etc) the synergies are obvious. | 10:03 | ||
jnthn | :-D | 10:04 | |
HackMeet is going nicely here too. :-) | |||
cono | yeah :) | 10:06 | |
jnthn | Even though I was drinking wasabi vodka last night. | ||
cono | D: | ||
jnthn | ukraine++ | ||
10:07
Su-Shee joined
10:08
mberends left
10:15
Ross left
|
|||
moritz_ | rakudo: my $p = pir::getinterp__p; say $p | 10:25 | |
p6eval | rakudo edf007: ( no output ) | ||
jnthn | moritz_: probably it needs () | 10:26 | |
moritz_ | rakudo: my $p = pir::getinterp__p(); say $p | 10:28 | |
jnthn | rakudo: subset A of Array; subset B of A; subset C of Any; subset D of A where B & C; say [] ~~ D | ||
p6eval | rakudo edf007: ( no output ) | ||
rakudo edf007: OUTPUT«Type objects are abstract and have no attributes, but you tried to access @!items in 'infix:<&>' at line 1 in 'infix:<&>' at line 407:CORE.setting in <anon> at line 11:/tmp/J7OKmwVZJ3 in 'Block::ACCEPTS' at line 4994:CORE.setting in 'ACCEPTS' at line | |||
..938:CORE.setting in… | |||
jnthn | rakudo: my $p = pir::getinterp__p(); say PARROT($p) | ||
p6eval | rakudo edf007: OUTPUT«Perl6Scalar->ParrotInterpreter» | ||
JimmyZ | I can't run the example in perl6 book? | 10:29 | |
jnthn | moritz_: Maybe it doens't know how to stringify. | ||
10:29
mj41 joined
|
|||
JimmyZ | the first code in Chapter 7 | 10:29 | |
moritz_ | jnthn: probably | ||
which one is chapter 7? | 10:30 | ||
JimmyZ | Chapter 7 Pattern matching | ||
radu__ | hey everyone | 10:32 | |
if i add a test that is currently failing, should i fudge it? | 10:33 | ||
or should I leave it as is? | |||
10:36
clintongormley joined
|
|||
moritz_ | radu__: depends on why it fails | 10:36 | |
radu__: if it fails because it's a new test for a feature that's not yet implemented, fudge it | 10:37 | ||
if the test didn't change, but started to fail, fudging is wrong; we're supposed to only regress on tests if there's a good reason for it | |||
JimmyZ | moritz_: paste.lisp.org/display/111371 | ||
10:37
whiteknight joined
|
|||
radu__ | ok, i added a test for RT 63588, which verifies if global variables can be accessed inside class declarations | 10:41 | |
so i suppose i should fudge it, since this is not implemented yet | |||
10:42
sorear left
|
|||
moritz_ | right | 10:42 | |
10:42
sorear joined
|
|||
moritz_ | JimmyZ: ah yes, known problem in rakudo and the book :( | 10:42 | |
JimmyZ | oh, okey, it's found by a user, not me | 10:43 | |
moritz_ | it needs to be 'my regex ...' | 10:45 | |
JimmyZ | yes, but still wrong | ||
moritz_ | and then rakudo needs to learn to pick up names of lexical scopes | ||
in the <foo> form | |||
10:47
JimmyZ left
10:51
agentzh left
|
|||
pugssvn | r31207 | mmcleric++ | RT #75526 tests | 10:52 | |
moritz_ | rakudo: class A { has $.x handles elems }; say A.new(x => []).elems | 11:07 | |
p6eval | rakudo 46e9ac: OUTPUT«1» | ||
moritz_ | rakudo: class A { has $.x handles elems }; say A.new(x => [3]).elems | ||
p6eval | rakudo 46e9ac: OUTPUT«1» | ||
moritz_ | rakudo: class A { has $.x handles elems }; say A.new(x => [3, 4]).elems | ||
p6eval | rakudo 46e9ac: OUTPUT«1» | ||
moritz_ | rakudo: class A { has $.x handles 'elems' }; say A.new(x => [3, 4]).elems | 11:08 | |
p6eval | rakudo 46e9ac: OUTPUT«1» | ||
moritz_ | rakudo: class A { has $.x handles 'sqrt' }; say A.new(x => 25).sqrt | ||
p6eval | rakudo 46e9ac: OUTPUT«Method 'sqrt' not found for invocant of class 'A' in main program body at line 11:/tmp/dKNSk_Hdh6» | ||
jnthn | moritz_: elems nyi - I may get to it today though | 11:09 | |
(but clearing some other attributes related things up first) | |||
moritz_ | did you mean "handles nyi"? | ||
jnthn | moritz_: oops, yes :-) | 11:10 | |
11:11
Ross joined
|
|||
moritz_ | jnthn: is berekuk++ in the same room with you? | 11:13 | |
11:17
[mark] left
|
|||
pugssvn | r31208 | radus++ | [t/spec]: Added test for RT 63588 global my variables are not visible inside class declarations. | 11:17 | |
colomon | jnthn: morning! I went back to sleep immediately after realizing I wasn't up to thinking because it was too early. just woke up again. | 11:18 | |
while I was failing back asleep, I think I concluded that Numeric should have versions of the Real-only methods which give graceful error messages. | 11:20 | ||
thoughts? | |||
moritz_ | when I want to define a class X does Real { ... } | 11:21 | |
it also does Numeric | |||
colomon | that's the theory. | 11:22 | |
moritz_ | will it get composition clashes from the Real methdo and the Numeric method stub? | ||
colomon | I don't think so. | ||
I'm already doing that for things like .abs | |||
moritz_ | then I'm all for it | ||
onperl.ru/onperl/2010/06/xakmit-na-...ussia.html looks like a nice hackathon | 11:23 | ||
11:24
masak joined
|
|||
masak | oh hai, #perl6! | 11:25 | |
phenny | masak: 07:46Z <moritz_> tell masak that in trunk t/spec/S32-str/encode.rakudo fails one test. Merging time? | ||
masak | yes, I was too quick to refudge there. | ||
thinking whether to roll back that commit and keep the branch for the day, or maybme merge immediately instead. | |||
moritz_ | masak: no need for big hurry; just wanted to make sure you're aware that fudging affects master too :-) | 11:26 | |
masak | heh ;) | ||
dalek | kudo: 92b1f42 | (Vyacheslav Matjukhin)++ | src/core/RangeIter.pm: RangeIter works with values which are idempotent to .succ (closes RT#75526) |
||
masak | maybe rest comforted in the knowledge that the failures uncovered are things that actually work in the buf branch.</post-rationalization> | 11:27 | |
moritz_ | if anybody is looking for a LHF in pure perl, rt.perl.org/rt3/Ticket/Display.html?id=75674 might be one | ||
(that's also a hint to the hackathoners, if anybody's reading #perl6 :-) | 11:28 | ||
colomon | actually, not sure if that's the best thing to work on today, what with the massive iterator overhaul in the wind. | 11:29 | |
(though I don't know if it will affect that particular code much) | |||
moritz_ | I hope it doesn't | ||
masak | I thought I'd commence the first iteration of pls today. | ||
colomon | \o/ | 11:30 | |
do we have tests for #75526? | |||
moritz_ | I think one was just added a few minutes ago | 11:31 | |
RT #75526 tests | |||
git-svn-id: svn.pugscode.org/pugs@31207 | |||
colomon | groovy | ||
moritz_ | those people rock. | 11:32 | |
pugssvn | r31209 | moritz++ | [t/spec] unfudge tests for RT #75526 | 11:35 | |
11:35
moritz_ sets mode: +v pugssvn
|
|||
cono | rakudo: my $c = { :$^q }; $c(5).perl.say | 11:42 | |
p6eval | rakudo 46e9ac: OUTPUT«===SORRY!===Symbol '$^q' not predeclared in <anonymous>» | ||
cono | rakudo: my $c = { my $a = $^q; :$a } $c(5).perl.say | 11:43 | |
p6eval | rakudo 46e9ac: OUTPUT«===SORRY!===Confused at line 11, near "my $c = { "» | ||
cono | rakudo: my $c = { my $a = $^q; :$a }; $c(5).perl.say | ||
p6eval | rakudo 46e9ac: OUTPUT«"a" => 5» | ||
cono | is it right? :$^q ? | 11:44 | |
moritz_ | std: { :$^q } | 11:45 | |
cono | due to spectest's TODO: * test colonpair shortcuts involving twigils: :$!a, :$.a, :$^a | ||
p6eval | std 31197: OUTPUT«ok 00:01 107m» | ||
moritz_ | cono: yes, should work that way | ||
ie { $^q }.(5) should return q => 5 | |||
erm | |||
ie { :$^q }.(5) should return q => 5 | |||
forgot that colon | |||
cono | it's not implemented for now ? | 11:46 | |
does it need test for unimplemented feature? | 11:47 | ||
pugssvn | r31210 | dimid++ | add tests for lines($fh, $limit) and lines($filename[, $limit]) | 11:54 | |
jnthn | moritz_: (berekuk++) yes, sat right next to me even :-) | 12:01 | |
masak | jnthn! \o/ | 12:02 | |
jnthn | masak! | 12:03 | |
masak | jnthn: where are you right now? | ||
jnthn | Right now I am at a hackmeet in Kiev. | 12:04 | |
masak | how's the weather in Kiev? | ||
jnthn | ETOOHOT | 12:05 | |
But thankfully this place has air conditioning. | |||
masak | we have overcast here, with a chance of rain. | ||
jnthn | At least the temperature is probably sensible. :-) | ||
Kiev is very pretty in the sun though :-) | 12:07 | ||
masak | temperature's a bit wonky. could be a thunderstorm is coming. | 12:08 | |
colomon | > say 1i.sign | ||
sign is only defined for Reals, you have a Complex() | |||
masak | colomon: \o/ | ||
jnthn | "you have a complex" <snicker> | ||
colomon | :) | ||
and that Complex is $.WHAT(), so it will report appropriately for any Numeric type. | 12:09 | ||
spectesting now. | |||
masak | it's the Mandelbrot complex, the one where you're always asking for the sign of your imaginary friends. | ||
12:09
radu__ left
|
|||
masak | could be worse. could be a hypercomplex. | 12:10 | |
12:10
radu__ joined
|
|||
Su-Shee | now try that explaining to your shrink. ;) | 12:10 | |
masak | "Ever since childhood I've believed that multiplication was commutative..." | 12:11 | |
moritz_ | and then you learned about those damn matrices | ||
and derivative operators | |||
masak | those are easier to write off as "not actual numbers" than quaternions :) | 12:12 | |
moritz_ | rakudo: say callframe().line | ||
p6eval | rakudo 46e9ac: OUTPUT«11» | ||
moritz_ | rakudo: say callframe().file | ||
p6eval | rakudo 46e9ac: OUTPUT«/tmp/ddUbjKGDgd» | ||
pugssvn | r31211 | radus++ | [t/spec]: Added test for RT 65224 class name as string unexpectedly works | 12:14 | |
cono | How can I produce warn message from src/Perl6/Actions.pm ? | 12:16 | |
12:17
meppl joined
|
|||
moritz_ | cono: you write to standard error with pir::printerr__vS($string) | 12:18 | |
cono | moritz_: thanks | ||
moritz_ | don't know if that's the best way, but it works | 12:19 | |
12:19
mberends joined
|
|||
jnthn | cono: What are you hacking on at the moment? | 12:19 | |
masak | mberends! \o/ | ||
cono | Trying to get a point in method colonpair($/) { | 12:20 | |
mberends | \\o// | ||
jnthn | ah, I think Vyacheslav is also looking at that at the moment. | ||
cono | I guess we have not access to local $^q in make_variable($/, ~$<var>) :) | ||
masak | mberends: I'm writing pls core tests. | 12:21 | |
cono | I'm just a newbie one, playing :) | ||
masak | cono: we all are :) | ||
except maybe that TimToady guy, he's been coding in Perl 6 for 10 years! | 12:22 | ||
cono | You have a great plus besides me, you know english :) | ||
masak: :D | |||
mberends | masak++ # another plus for masak | ||
jnthn | cono: :-) | 12:23 | |
12:23
Ross left
|
|||
jnthn wonders what the $*q thingy is | 12:23 | ||
cono: Oh, I mis-read. | 12:24 | ||
moritz_ | :$*q should also work :-) | ||
masak | mberends: I have many small questions about the new data model. are you available enough to discuss them? | 12:25 | |
mberends | masak: yes, and very interested :) | 12:26 | |
masak | ok. let's build up the current data model from first principles. | ||
there's a subcommand 'fetch'. | |||
12:26
isBEKaml joined
|
|||
masak | that already implies that there are two project states: 'not fetched' and 'fetched'. | 12:26 | |
is there a better name for 'not fetched'? :) | 12:27 | ||
mberends | Debian doesn't. They call it 'purged' :-/ | ||
masak | 'purged' meaning 'not fetched'? | ||
mberends | yup | 12:28 | |
moritz_ | purged means "not installed, and config files removed" iirc | ||
masak | I like it, except it sounds too grave. | ||
maybe something punnier would work. | |||
mberends | because if you do purge software, you have nothing left | ||
masak | also, what's the state of a project that does not exist? | ||
maybe that's an error condition... | 12:29 | ||
isBEKaml | "Ok, some modules were not so compatible, so I have brushed them under the carpet? " ;) [proto] | ||
EBRUSHEDUNDERCARPET | |||
masak | mberends: what about 'gone' for 'not fetched'? | ||
isBEKaml | masak: mine above? ^^ | 12:30 | |
masak | isBEKaml: it's... a bit long... | 12:31 | |
mberends: can you fetch an already fetched project? is that a no-op, or does it re-download that project? does it re-download all dependencies? | |||
12:31
masonkramer left
|
|||
masak | mberends: can you fetch an already built project? can you fetch an already installed project? | 12:32 | |
12:32
mberends left
|
|||
masak | oh noes, I DDoS-ed mberends! :( | 12:33 | |
isBEKaml | :) | 12:34 | |
masak: I find that trying out things on Yapsi takes up some startup time.. :( | |||
masak | isBEKaml: have you compiled? | 12:35 | |
isBEKaml | masak: yes. | ||
masak | compiled Yapsi, I mean. | ||
that reduces startup time somewhat. | |||
after that, startup is 3-5 seconds on my box. | |||
isBEKaml | ack, I didn't see that Makefile. I went straight into yapsi and Yapsi.pm | 12:36 | |
masak | isBEKaml: feel free to add something about 'make' in the README. | 12:37 | |
isBEKaml | Don't know why I seem to find myself in such an hurry... :/ | ||
masak | isBEKaml: what's your Github accound name? | ||
hugme: list projects | 12:38 | ||
hugme | masak: I know about Math-RungeKutta, book, fakedbi, gge, hugme, ilbot, json, november, nqp-rx, nqpbook, perl6-examples, perl6-wtop, process-cmd-args, proto, pugs, rmp, star, svg-matchdumper, svg-plot, tardis, temporal-flux-perl6syn, tufte, web, yapsi | ||
masak | s/accound/account/ | ||
isBEKaml | svatsan | ||
masak | oh, right. | ||
hugme: add svatsan to yapsi | |||
hugme hugs svatsan. Welcome to yapsi! | |||
isBEKaml | proto. :) | ||
12:40
mberends joined
|
|||
isBEKaml | do I need to add Yapsi.pm to ~/.perl6/lib? | 12:41 | |
masak | either that, or modify your PERL6LIB. | ||
mberends | ETOOMANYQUESTIONSANDTOOWOBBLYWIFI | 12:42 | |
isBEKaml | yes, added to ~/.perl6/lib. This still takes up some time. approx 10 secs | ||
masak | mberends: assuming A depends on B depends on C, the order has to become something like this, right? fetch A, fetch B, fetch C. build C, install C, build B, install B, build A, install A. the assumptions I made are that (1) one needs to fetch a project in order to know its dependencies, and (2) depending-project can't be built until depended-project is installed. | ||
isBEKaml: oh wait. Yapsi.pm doesn't speed up things. it's the Yapsi.pir which does. | 12:43 | ||
mberends | masak: proto used to temporarily work around (2) by using newly downloaded projects via PERL6LIB, and that would still be desirable, because you could defer installing a batch of modules until they all test out OK. | 12:45 | |
isBEKaml | masak: hmm, that might be because I got an "ancient" machine. ;) | ||
masak | mberends: hm, agreed. | ||
isBEKaml: do you have a Yapsi.pir? | 12:46 | ||
isBEKaml | masak: yes. I see that in lib folder. | ||
masak | isBEKaml: is it either in ~/.perl6/lib or in a PERL6LIB path? | ||
that's when you get the speed. | |||
well, um, 'speed'. | 12:47 | ||
mberends: ok, that makes fetch, build, and install into three distinct stages. each stage implies the prior one, I suppose. | 12:49 | ||
isBEKaml | masak: not bad, approx 7 secs.. TIL that PERL6LIB can take .pir files too, not only .pm ones. :) | ||
masak | 'TIL'? | ||
isBEKaml | Today I Learned | 12:50 | |
masak | ah. nice abbreviation. :) | ||
or acronym. whatever. | |||
isBEKaml | blatantly took off reddit lingo... ;) | ||
jnthn | TLA Is LTA | ||
masak | :D | 12:51 | |
mberends | masak: regarding project state, it would be nice if they could progress in transactions through <none fetched built tested installed> | ||
masak | isBEKaml: feel free to use your new Yapsi privs to add your new-found knwoledge to the README. :) | ||
jnthn | rakudo: "abc" ~~ /$<foo>=(<alpha>)/; say $<alpha>; | ||
p6eval | rakudo 92b1f4: OUTPUT«» | ||
masak | mberends: right. what's the rationale for having 'tested' in there, and on by default? | ||
jnthn | rakudo: "abc" ~~ /$<foo>=(<alpha>)/; say $0<alpha>; | ||
p6eval | rakudo 92b1f4: OUTPUT«Method 'postcircumfix:<{ }>' not found for invocant of class 'Proxy' in main program body at line 1» | ||
jnthn | rakudo: "abc" ~~ /$<foo>=(<alpha>)/; say $/ | 12:52 | |
p6eval | rakudo 92b1f4: OUTPUT«a» | ||
jnthn | Regex engine bug? | ||
mberends | masak: let me tell you about testing some time. It rocks! ;) | ||
jnthn | (we lose the $<alpha> | ||
) | |||
masak | mberends: also, I'm not going to be super-strict on the meaning of 'transation' here. if a project A builds successfully, but B in the same group fails, I'm not going to re-set A's state to 'fetched'. | ||
mberends: agreed, but this *will* cause most projects to fail to install on people's computers. | 12:53 | ||
mberends | masak: most projects can get a little fake passing test to get with the program | 12:54 | |
masak | er. | ||
the problem is not that they don't have tests. | |||
that vacuously counts as 'all tests pass'. | |||
the problem is that most projects out there have failing tests. | |||
we'll thus be making an installer which rejects most of the app cheese. | 12:55 | ||
mberends | I'd vote for 'correct' ahead of 'expedient' there | ||
masak | ok, just checking. | 12:56 | |
how does the failure mode look. | |||
s/\./?/ | |||
what does a user see when the tests fail? what options are available? | |||
discuss. | |||
masak bikes to fetch sushi & | |||
moritz_ | OH NOEZ, a test has failed. You can view the result, ignore it and proceed (not recommended) or abort and report | 12:58 | |
mberends | the test output could be written to a log file. If the tests pass, erase the file. If they fail, display a brief error message that includes the log file name. | ||
moritz_: +1 # kinda like a --force install mode | 12:59 | ||
( it's also cute to hear Parrot pronounced like Monsieur Poirot :) | 13:03 | ||
jnthn | rakudo: say ^5; | ||
p6eval | rakudo 92b1f4: OUTPUT«01234» | ||
jnthn | rakudo: say (^5).WHAT; | ||
p6eval | rakudo 92b1f4: OUTPUT«Range()» | ||
isBEKaml | rakudo: ^5.say | 13:09 | |
p6eval | rakudo 92b1f4: OUTPUT«5» | ||
isBEKaml | wutt? :O | ||
rakudo: (^5).say | 13:11 | ||
p6eval | rakudo 92b1f4: OUTPUT«01234» | ||
isBEKaml | Ah, I seeee... treat it like a list... | 13:12 | |
jnthn | isBEKaml: you did ^(5.say) first time round :-) | 13:13 | |
isBEKaml | jnthn: yes, prefixed ops kinda confuse me. :( | 13:14 | |
13:15
takadonet joined
|
|||
isBEKaml | jnthn: but wait, is the precedence right here? . binds closer than a ^ ? | 13:16 | |
masak | ok, so `pls install --force naughy-project`, then. | ||
13:16
mberends left
|
|||
isBEKaml | or pls install --force knotty-project # for multiple transitive dependencies. :) | 13:17 | |
masak | isBEKaml: no need for a flag for that. assuming I correctly understood you. | ||
pls fetches, builds and installs all dependencies. | |||
isBEKaml | masak: install them even if one fails, inspite of a lot of dependencies for what I need. | 13:18 | |
13:18
mberends joined
|
|||
masak | isBEKaml: hm. interesting. | 13:18 | |
isBEKaml: problem is, how do you run 'make install' on something for which 'make' likely fails? | 13:19 | ||
13:19
snarkyboojum joined
|
|||
colomon | huh. how did we lose 100+ tests from earlier this week? | 13:20 | |
masak | snarkyboojum! \o/ | ||
moritz_ | colomon: we did? | 13:21 | |
masak | mberends: can an install step fail? what state is the project in after that? | ||
snarkyboojum | hi masak! o/ | ||
isBEKaml | masak: no, that's different. I want to install A. Dependency is like this. A->B. B->C,D,E. E->F D->G. Go ahead installing A even if any of them except A fails to install. | ||
colomon | my last spectest run shows 33,274 passing, 39,887 total | ||
earlier it was 33,3xx passing and 40,000+ total | |||
isBEKaml | yo, snarkyboojum ! | ||
snarkyboojum | isBEKaml: o/ :) | 13:22 | |
masak | isBEKaml: ok, point taken. I think we have to allow for that, yes. | ||
isBEKaml | masak: in effect, I'm saying --force would just install A. That's what I want after all. | ||
moritz_ | colomon: I removed one file from t/spectest.data, and put it in t/stresstest.data | ||
colomon: but that should account for ~40 tests, not > 100 | |||
masak | isBEKaml: right, so --force has a dual function here. sometimes it means (1) install A despite the fact that A's test stage came out negative; sometimes it means (2) install A despite the fact that A's dependencies can't be installed. | 13:23 | |
this works because both (1) and (2) are preconditions for installation, and both can be ignored. | |||
dalek | kudo: 0d0672b | (Solomon Foster)++ | src/core/Numeric.pm: Add stubs with fail for the Real-only methods, so that using them incorrectly |
||
kudo: b502e87 | (Solomon Foster)++ | src/core/Complex.pm: Tweak Complex a bit, including requiring Real values be passed to new, moving and Complex.sign. |
|||
isBEKaml | masak: right. | 13:24 | |
masak | does an install --force, where the --force turned out to be unnecessary, succeed or fail? | ||
moritz_ | succeed | ||
isBEKaml | succeed. | ||
masak | good. :) | 13:25 | |
isBEKaml | I don't think the unnecessary check is needed here. | ||
moritz_ | "I force you to, but please don't do it if no force is necessary" doens't really sound very consequent :-) | ||
jnthn | That's just mean. :-) | ||
isBEKaml | moritz_: I think you mean convincing. :) | ||
jnthn | Certainly succeed. :-) | ||
masak | reason I'm asking is I see a social failure mode wherein authors ignore the tests and consumers create an alias for 'pls install --force' | 13:26 | |
13:26
JimmyZ joined
|
|||
moritz_ | jnthn: what does it mean when typeof $P0 returns 5? :/ | 13:26 | |
isBEKaml | masak: one way around that is forcing a project structure. Every project should contain tests. | ||
masak | in some sense, it's already a social failure more that author sloppiness only punishes consumers. :/ | ||
isBEKaml: again, that's not the problem. | 13:27 | ||
isBEKaml: no tests imply all tests succeeded. | |||
takadonet | rakudo: role work { method x {say 'hello'}}; class me does work {}; me.new.x(); | ||
p6eval | rakudo 92b1f4: OUTPUT«Could not find sub &say in 'x' at line 11:/tmp/pxIS09fiaG in main program body at line 11:/tmp/pxIS09fiaG» | ||
takadonet | still not fixed :( | ||
isBEKaml | masak: weird, your quote sounds a lot like that of an academic everyone knows ;) | 13:28 | |
masak | isBEKaml: it's not to be read as an anti-test stance. | ||
isBEKaml | masak: Again, that's what that guy said. :) | ||
masak | isBEKaml: I just mean that I'm not going to punish consumers even more just because the author doesn't have a t/ directory. | 13:29 | |
to me, it's already mean enough to say "hey, tests failed! you just want to install this piece of software, and now I've decided to randomly show you this error, the cause of which you have absolutely no knowledge of, and the cure to which you probably can contribute very little! have a nice day!" | 13:30 | ||
which is, essentially, what refusing to install after a failed test run means. | |||
isBEKaml | masak: that's what I wanted to avoid by providing a common framework through proto when authors submit their modules for user consumption. Proto should enforce it, but that doesn't necessary cure the problem, only mitigate it. | 13:31 | |
s/necessary/necessarily/ | |||
13:31
mberends left
|
|||
masak | isBEKaml: proto does not enforce anything. by design. neither will pls. | 13:31 | |
not only because I don't believe it'll work, but also because I believe it sends the wrong signals. | 13:32 | ||
a project can have perfectly legitimate reasons not to have a t/ directory. | |||
isBEKaml | masak: well, if that's by design, we can go without enforcing the checks and leave it to user discretion. | 13:33 | |
masak | isBEKaml: use.perl.org/~masak/journal/38876 | 13:34 | |
isBEKaml: the second guiding principle there, "don't assume", really extends to the project author as well. | |||
isBEKaml | my thinking was, at the rate p6 is evolving, authors and consumers would want a way of ensuring everything works as expected(no nasty surprises) | 13:35 | |
13:35
JimmyZ left
13:36
JimmyZ joined
|
|||
masak | there are *guidelines* here: github.com/masak/proto/blob/master/PIONEER | 13:37 | |
but note that they start with "If you have a Perl 6 project, it already conforms to the requirements posed by proto." | |||
moritz_ | .oO( spelling stuff correctly helps. Like not method postcircimifx:<{ }>( ) ) |
13:38 | |
masak | isBEKaml: granted, if you *do* start to adhere to they guidelines, proto will expect you to follow them. hence lines 32-33. | 13:39 | |
isBEKaml: but that's opt-in, and that makes the whole difference. | |||
s/the whole/all the/ | 13:40 | ||
isBEKaml | masak: yes, we leave that as something between consumers and authors. (consumers can think of them as a deal breaker or whatever - NOT our concern now) :) | 13:41 | |
masak | I see two alternatives to "mandate the use of --force when the tests fail". | ||
jnthn | .oO( Min dryck e kvass ) |
13:42 | |
masak | one alternative is an interactive prompt asking "hey, the tests failed! sure you want to proceed?" | ||
jnthn: :P :P :P | |||
jnthn | masak: Couldn't resist. :-) | ||
masak | jnthn: perfect grammar, too! you rock! | ||
isBEKaml | jnthn: ? | ||
masak | isBEKaml: it's a long story :P | ||
isBEKaml | :D | ||
masak | isBEKaml: there's this "Swedish" song, which is really Czech... | 13:43 | |
13:43
mberends joined
|
|||
masak | ...whose title is "Min man e kass", meaning "My husband isn't very good". | 13:43 | |
isBEKaml: jnthn++'s comment was a riff on that. | |||
he said "My drink is kvass.", which sounds kinda similar to "Min man e kass". | 13:44 | ||
EOLONGSTORY | |||
isBEKaml | :D ## I'm learning Swedish too! | ||
masak | mberends: the OO structure of all this is becoming clearer. | ||
mberends: there will be App::Pls::Core in the middle, controlling everything. | 13:45 | ||
mberends: then there will be Fetcher, Builder, Installer and Uninstaller objects doing the actual work. | |||
there can be different Fetcher classes for github, gitorious, and rakudo/parrot/proto. | 13:46 | ||
maybe there'll be separate Builder and Installer classes depending on OS, but it'd of course be better to make them cross-platform. | |||
mberends: I see two major kinds of 'install' action, by the way. one is "run 'make install'", the other is "copy things to ~/.perl6/lib" | 13:47 | ||
mberends: only the latter can reasonably be uninstalled. and even then, there's the problem of "refcounting". | 13:48 | ||
mberends: what's the outcome of doing install-copying of a module X/Y.pir, when X/Y.pir already exists in ~/.perl6/lib ? does that fail because of a collision? I guess we can't, really, because it could be a reinstall... :/ | 13:50 | ||
jnthn | Ooh, yay. In theory I has patches that make us pass the whole S12-introspection/attribute.t again. | ||
isBEKaml | masak: how does proto/pls deal with versioning? | 13:51 | |
masak | isBEKaml: an extremely good question. | 13:52 | |
isBEKaml | masak: do you have any naming conventions in naming modules? | ||
masak | isBEKaml: no. | ||
isBEKaml | like module A-version-date.pm or something? | ||
masak | isBEKaml: oh, sure. | ||
see S13, I think. | |||
no, S11. | 13:53 | ||
jnthn | S11 | ||
masak | and prepare to have your mind blown. ;) | ||
jnthn | I just played with the meta-model some, mine is already blown for today. :-) | 13:54 | |
moritz_ | you met a mind-blowing model? | ||
:-) | |||
masak | jnthn: you sure it wasn't the Wasabi vodka, then? :P | ||
13:56
mberends left
|
|||
jnthn | moritz_: Well... :-) | 13:56 | |
masak: I had one of the best nights sleep I've had recently after that. :-) | |||
isBEKaml | masak: one small change in yapsi too. instead of the shebang pointing to /usr/bin/alpha, i've used /usr/bin/env alpha | ||
masak | jnthn: knocked out *and* clear sinuses? :P | 13:57 | |
isBEKaml | don't know how that would work on Windows (maybe was never meant for it :P ) | ||
masak | isBEKaml: that's fine by me. | ||
Windows doesn't care for shebang lines. | |||
jnthn | masak: How could that not be a sleep win? :-) | ||
masak | :) | 13:58 | |
13:58
mberends joined
|
|||
isBEKaml | masak: oh, right. Feels like it's been long since I used Windows though I use it at work everyday. ;) | 13:59 | |
masak | isBEKaml: sounds like wishful thinking to me. :) | ||
mberends: a couple of questions for you in the backlog. | 14:00 | ||
anyway, picking up the thread on alternatives to 'install --force'. | 14:01 | ||
the first alternative was an interactive prompt. | |||
I don't really like interactive prompts. | |||
moritz_ | there could be a preference | ||
"force by default" vs "fail by default" | |||
masak | yes, but that's just punting the problem. | ||
the key here is a good deafult. | |||
moritz_ | aye | ||
masak | and I'd like to write as little code as I can get away with. :) | 14:02 | |
so I plan to kill dead most of the preferences proto has. | |||
14:04
mberends left
|
|||
jnthn | .oO( mberends network keeps going on strike ;-) ) |
14:05 | |
dalek | psi: b74b719 | Shrivatsan++ | (2 files): Add more info about building yapsi and make the |
||
14:06
mberends joined
|
|||
pugssvn | r31212 | mmcleric++ | test colonpair shortcuts involving twigils | 14:06 | |
masak | isBEKaml++ | ||
isBEKaml: no worries this time, but can I ask you to leave the second line blank in git commit messages? | 14:07 | ||
isBEKaml: it makes all manner of tools work better when showing the messages. | |||
tbaggery.com/2008/04/19/a-note-abou...sages.html | |||
whitechap | How can I check if XML modules are installed in Perl on Linux? | ||
masak | whitechap: let me guess; Perl 5? | ||
14:08
mikehh left
|
|||
whitechap | masak, Yes | 14:08 | |
masak | whitechap: I kindly refer you to #perl on irc.perl.org. | ||
this is #perl6. | |||
whitechap | How different are 5 and 6? | ||
masak | whitechap: in this case, different enough. :) | ||
cono | :) | ||
masak | in general, very different in syntax, but the feeling is still very much Perl. | 14:09 | |
isBEKaml | masak: ok, next time. :) | ||
pugssvn | r31213 | dimid++ | fix: skip block while lines($filename, $limit) isn't implemented yet | ||
masak | whitechap: of course, that depends who you ask. | ||
whitechap: ask a Perl 5 person, and they will probably staunchly say that Perl 6 is a whole 'nother language. | |||
...which is a defendable position, but not the whole story, if you ask me. | |||
whitechap | masak, Thnx | 14:11 | |
masak | whitechap: good luck on #perl! | ||
jnthn | rakudo: say 'a'...'z' | ||
p6eval | rakudo 92b1f4: | ||
..OUTPUT«abcdefghijklmnopqrstuvwxyzaaabacadaeafagahaiajakalamanaoapaqarasatauavawaxayazbabbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzcacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczdadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzeaebecedeeefegeheiejekelemeneoepeqereseteuevewex… | |||
masak | isBEKaml: you're in good company. not many people follow, or are aware of, those Best Practices. I only care when it pertains to regular committers on "my" projects. | ||
14:12
dju joined,
agentzh joined
|
|||
isBEKaml | masak: I usually give commit messages in a single line. I was wondering why it was wrapping over. will have to look at my .vimrc. | 14:12 | |
14:13
dju left
|
|||
masak | isBEKaml: my vim colored text on the second line in git commit messages bright-white-on-red. that's how I became aware that there even is a best practice. :) | 14:13 | |
vim++ | |||
14:14
dju joined
|
|||
masak | mberends: if I have a project with state 'install', and I do 'fetch' on it, what state will it have afterwards? | 14:15 | |
s/install/installed/ | |||
isBEKaml | masak: ah, I see.. | ||
masak | mberends: I posit that 'build-failed' is simply 'fetched', and 'tests-failed' (if there is one) is simply 'built', and that 'failed' isn't a state but a message passed from one stage to the next. sound sane? | 14:18 | |
14:19
szabgabx joined
|
|||
masak | should there be a `pls install --skip-tests project` option? | 14:19 | |
(the difference to '--force' being that the tests aren't even run) | |||
jnthn | --no-matter-what | 14:20 | |
takadonet | do we have lazy list working yet with gather and take? | ||
14:21
mberends left
|
|||
masak | takadonet: no. | 14:23 | |
14:23
rv2733 joined
|
|||
takadonet | masak: oh :( | 14:24 | |
masak | takadonet: but pmichaud is woking in that area. | ||
takadonet | masak: sweet. | ||
finally variable interpolation in comb! | 14:26 | ||
moritz_ | well, gather/take *is* lazy | ||
takadonet | my $sequence = $seq.seq().comb( /. ** {1..$!width}/).join("\n"); | ||
thanks whoever did that patch :) | |||
moritz_ | I have a patch for callframe().my | 14:28 | |
but... it doesn't work :( | |||
it returns Mu for every variable | 14:29 | ||
14:29
hercynium left
|
|||
moritz_ | (or rather the Null PMC, which I then turn into Mu before anything bad happepns | 14:29 | |
cono | rakudo: enum Day <Sun Mon Tue Wed Thu Fri Sat>; my $x = "Today" but Day::Tue; say $x.WHAT | 14:30 | |
p6eval | rakudo 92b1f4: OUTPUT«()» | ||
jnthn | moritz_: I can peek at it if you like. | ||
moritz_ | jnthn: just a sec... | 14:31 | |
masak | mberends: all of the subcommands fetch, build and install also act on the projects' dependencies. does the subcommand test act on the projects' dependencies? I assume that any project on the assembly line from build to install will be tested, but what about running 'pls test november' on the command line? | ||
moritz_ | jnthn: nopaste.snit.ch/21206 | 14:32 | |
my $x = 5; callframe().my # returns a LexPad | |||
but callframe.my.<$x> # returns Mu | 14:33 | ||
14:33
sdeseille joined
|
|||
sdeseille | Hello | 14:33 | |
masak | hi. | ||
moritz_ | (removing the 'is Associative' doesn't change anything) | 14:34 | |
jnthn | masak: maybe try coercing key to a string register | 14:35 | |
moritz_ | tried that too | ||
jnthn | masak: er, try telling moritz that | ||
:-) | |||
masak | moritz_: maybe try coercing key to a string register | ||
jnthn | Oh. :-| | ||
moritz_ | according to the docs, they should be the same. And according to my experiments, both return a Null PMC | 14:36 | |
my next step is to iterate the PMC | |||
and see what falls out | |||
maybe it's empty, by some magic | |||
pugssvn | r31214 | dimid++ | fixing the last commit | ||
jnthn | moritz_: Yeah, it looks like it should work off hand. | 14:37 | |
pmichaud | good morning, #perl6 | 14:38 | |
moritz_ | good morning pmichaud | ||
pmichaud looks forward to finishing lists/iterators today | |||
sdeseille | I try to compile rakudo on my fresh debian squeeze and i Have an error message. Is anyone can help me ? | ||
moritz_ | sdeseille: if you show us the error message, we can try | ||
sdeseille | the message is : pastebin.ca/1881700 | 14:39 | |
moritz_ | so that's during the parrot build | ||
jnthn | morning from the Kiev Hackmeat, pmichaud | ||
er, Hackmeet | |||
:-) | |||
pugssvn | r31215 | jnthn++ | [t/spec] Unfudge all S12-introspection/attribute.t, since Rakudo can now the whole file. | ||
moritz_ | sdeseille: is this a fresh checkout of rakudo and parrot? | 14:40 | |
14:40
Visitor99 joined
|
|||
sdeseille | yes | 14:40 | |
jnthn | moritz_: one more thing | ||
$P1 = getattribute $P0, '$!parrot_lexpad' | 14:41 | ||
moritz_: after that line try | |||
$P1 = descalarref $P1 | |||
moritz_ | ah | ||
dalek | kudo: 5c78c71 | jonathan++ | src/Perl6/Compiler/Package.pm: Set an attribute type to Any if there's no supplied type constraint. |
||
kudo: 52873b9 | jonathan++ | (3 files): A little tweak so we can augment P6metaclass classes in the setting as well as |
|||
kudo: 8731a52 | jonathan++ | src/metamodel/Attribute.nqp: Attribute.build should not return a Parrot Undef; it explodes leakily in Perl 6. |
|||
pmichaud | jnthn: (5c78c71) Is that correct?! | 14:43 | |
meaning, I'm not able to do $!myattr = any(2,3); ? | |||
moritz_ | why shouldn't it be? | ||
rakudo: my $x; say $x.WHAT | |||
p6eval | rakudo 92b1f4: OUTPUT«Any()» | ||
moritz_ | it's the same with ordinary variables too | 14:44 | |
pmichaud | rakudo: my $x = any(2,3); | ||
p6eval | rakudo 92b1f4: ( no output ) | ||
pmichaud | rakudo: my $x = any(2,3); say $x; | ||
p6eval | rakudo 92b1f4: OUTPUT«any(2, 3)» | ||
moritz_ | huh. | ||
pmichaud | there's a difference between initial value and type constraint. | ||
(or there can be) | |||
moritz_ | that is kinda unexpected to me | ||
masak | to me too. | ||
pmichaud | you're expecting assigning a junction to a variable to fail? | ||
masak | I thought the spec said ordinary variables (and attributes) are typed Any by default. | ||
pmichaud checks the spec | 14:45 | ||
jnthn | pmichaud: There was a spec change towards Any I'm sure | 14:46 | |
pmichaud: I don't exactly like it either. ;-) | 14:47 | ||
sdeseille | what can i do to help you for help me ? | ||
pmichaud | jnthn: I know that we speced that untyped containers would default to Any as the protoobject. | ||
I don't recall that we said it would be a type constraint (because of the junction issue mentioned above) | |||
jnthn | pmichaud: OK, I'll Mu it. :-) | ||
pmichaud: And update the test. | |||
moritz_ | sdeseille: which compiler do you use? | ||
pmichaud | we should probably seek clarification/confirmation. | 14:48 | |
anyway, I think that attribute typing should generally default to be the same as variable typing | |||
jnthn | OK, I'll wait then. :-) | ||
pmichaud | whatever it ends up being. | ||
jnthn | pmichaud: Yeah | ||
Oh, they should be consistent. | |||
sdeseille | gcc -v | 14:49 | |
14:49
ash__ left
|
|||
sdeseille | gcc version 4.4.4 (Debian 4.4.4-1) | 14:49 | |
moritz_ | jnthn: re LexPad, seems I store the wrong one. Mine contains only one lexical named "mainline" :( | ||
sdeseille: I have 4.3.2, maybe that's the difference | 14:50 | ||
sdeseille: it's a bug while building parrot (which is built by rakudo), so maybe the folk in #parrot (on irc.perl.org) can help you more | |||
lue | well hai there o/ | 14:54 | |
jnthn | moritz_: ah. | ||
masak | lue: hai! | 14:55 | |
ok, first step of the pls mini-hackathon has been completed. here are a lot of stubbed test cases, in the form of comments. github.com/masak/proto/commit/d1123...f2a2fd8d7c | 14:57 | ||
people with tuits are encouraged to review these. :) thanks. | |||
jnthn | So many hackathons today :-) | 14:58 | |
moritz_ | jnthn: it seems there's an off-by-one distance somewhere... with callframe(0).my.<$x> I can get the caller's scope's $x (thought it should not the caller's, but the current one) | ||
not sure if it's my own error, or parrot's fault | |||
dalek | kudo: 02d164d | (Vyacheslav Matjukhin)++ | src/Perl6/Actions.pm: colonpair shortcuts with twigils fixed (closes RT#73908) |
||
masak | in particular, I welcome comments about cases I might have missed, comments about tests which look suspicious, or questions that arise when reading those lists of tests. | 14:59 | |
pmichaud | btw, I noticed last week that using PIR's .tailcall will cause lexical frames to be lost | 15:03 | |
pugssvn | r31216 | mmcleric++ | "colonpair with twigil" patch commited to master repo | ||
sdeseille | ok bye | 15:06 | |
15:06
sdeseille left
|
|||
moritz_ | I've got LexPad.keys working | 15:06 | |
and LexPad.postcircumfix:<{ }> | |||
but I don't reliably obtain the right lexpad from callframe().my yet | 15:07 | ||
15:07
foodoo joined
|
|||
lue | what is this pls mini-hackathon? | 15:11 | |
masak | lue: basically it's me getting tunnel-vision for a couple of hours and getting the pls core started. | 15:13 | |
it's going unexpectedly well. | 15:14 | ||
moritz_ | $ /perl6 -e 'sub f { say callframe(1).my.<$x> }; my $x = 5; f()' | ||
5 | 15:15 | ||
masak | \o/ | ||
jnthn | moritz_++ | 15:16 | |
moritz_ | if some brave soul wants to write tests for callframe(), I'd be grateful | 15:17 | |
I'll have to leave in a few minutes | |||
pmichaud | if no tests, open a ticket. | ||
masak | std: my %h = { a-b => 42 } | 15:18 | |
p6eval | std 31197: OUTPUT«ok 00:01 105m» | ||
masak | rakudo: my %h = { a-b => 42 } | 15:19 | |
p6eval | rakudo 0d0672: ( no output ) | ||
moritz_ | pmichaud: doing that now | ||
masak | rakudo: my %h = { has-b => 42 } | ||
pmichaud | masak: that should fail. | ||
p6eval | rakudo 0d0672: OUTPUT«===SORRY!===Malformed has at line 11, near "-b => 42 }"» | ||
masak | pmichaud: why? | ||
pmichaud: it's an identifier. | |||
pmichaud | oh, never mind | ||
I meant the curly form earlier, but you're using assignment, not binding. | |||
masak | has-b, however, shouldn't fail. | ||
pmichaud | assignment should be okay. | ||
correct, has-b shouldn't fail. | |||
masak submits rakudobug | |||
std: my %h = { has-b => 42 } | 15:20 | ||
p6eval | std 31197: OUTPUT«ok 00:01 105m» | ||
pmichaud | workaround for now would be 'has-b' => 42 :-) | 15:21 | |
masak | aye :) | ||
dalek | kudo: c19f148 | moritz++ | (3 files): callframe().my returns a LexPad. |
15:22 | |
cono | std: { :$^q }.(5).perl.say | ||
p6eval | std 31197: OUTPUT«ok 00:01 104m» | ||
cono | rakudo: { :$^q }.(5).perl.say | ||
p6eval | rakudo 0d0672: OUTPUT«===SORRY!===Symbol '$^q' not predeclared in <anonymous>» | ||
15:26
agentzh left
|
|||
moritz_ | somebody should bump PARROT_REVISION to see if rakudo works with latest parrot | 15:26 | |
15:26
tedv joined
|
|||
pmichaud | "method keys" in the LexPad implementation is going to need replacing | 15:26 | |
moritz_ | why? how? | 15:27 | |
pmichaud | in general, .keys, .kv, .pairs, and .values are all supposed to be implemented in terms of .iterator (or .list) | ||
moritz_ | ok | ||
bbl | |||
dalek | kudo: 57ec550 | jonathan++ | src/Perl6/Compiler/Package.pm: Default to unconstrained, not Any, for attribvutes in order to be consistent |
||
kudo: ae1300f | jonathan++ | src/core/operators.pm: Fix infix:<...> with a list to the right so it doesn't flow away data. Patch |
|||
pugssvn | r31217 | jnthn++ | [t/spec] Update test with default constraint type. | 15:32 | |
15:35
JimmyZ left
15:36
Visitor99 left
15:38
szabgabx left
15:39
Visitor99 joined
|
|||
pugssvn | r31218 | mmcleric++ | test for RT#74990 | 15:53 | |
masak | does anyone else have this pattern: using <these-quotes> around a string argument to indicate that the corresponding parameter is a slurpy array and could theoretically expect several string arguments? | 15:56 | |
15:56
patspam joined
|
|||
masak | heh, just typing 'git push origin pls' is kinda funny :) | 15:56 | |
lue | "Come on, git! The Big Bang has to happen at _some_ point!" :) | 15:58 | |
masak | lue: you're a few billions of years late, I'm afraid. | ||
pugssvn | r31219 | dimid++ | [t/spec] Add tests for RT#75674. infix:<...> works with a list to the right | 15:59 | |
lue | .oO(oh silly me. tardis -e 'run(git push origin pls);') |
16:00 | |
masak | it'll be a fine day when we can debug pls with Tardis. :) | 16:03 | |
lue | > tardis --version | 16:04 | |
16:04
hercynium joined
|
|||
lue | v40TT | 16:04 | |
masak | we actually haven't had any Tardis releases yet. I'm hoping we'll have one next month, along with Yapsi. | 16:07 | |
lue | .oO(then where did I get this release from....) |
16:10 | |
rakudo: say (4 ... ^5) | 16:11 | ||
p6eval | rakudo c19f14: OUTPUT«4321» | ||
lue | not yet then... | ||
16:14
radu__ left
16:16
justatheory joined
16:17
Ross joined
|
|||
pmichaud | masak: (pattern) no, I've not seen that yet. | 16:19 | |
masak | it's just a minor thing, but it looks fairly nice. | 16:20 | |
it says "I know I'm a string, but I could just as well be a list of 'em" | |||
pmichaud | it will undoubtedly confuse people someday. :-) | ||
especially if the string ever contains a space :) | |||
masak | :) | ||
been there, done that :P | |||
pmichaud | "I changed <these-quotes> to <these quotes> and got a different answer!" | 16:21 | |
You could perhaps do q<these-quotes> | |||
that would be slightly safer, at the cost of a keystroke. | |||
masak | that would defeat the purpose of the pattern: being easily extendable to a list of strings. | 16:22 | |
well, um, the difference *is* but a keystroke... | |||
lue goes and tries to implement andthen and orelse | |||
rakudo: say ord("-") - ord(" ") | 16:23 | ||
p6eval | rakudo c19f14: OUTPUT«13» | ||
16:25
Visitor99 left
|
|||
lue | what exactly is the pasttype used in Grammar.pm when defining xor, or, and, etc. ? | 16:27 | |
pmichaud | Rakudo currently treats xor, or, and as binary operators. | 16:28 | |
$a or $b is essentially the same as unless $a { $b } | |||
$a and $b is essentially the same as if $a { $b } | |||
lue | I wonder how andthen and orelse would fit then. I'm tempted to use and/or/etc. as a cookie-cutter of sorts, but not sure it works in that same fashion. | 16:30 | |
pmichaud | they don't really fit | ||
(which is partially why they haven't been implemented) | |||
what likely needs to happen is that we need a way for the compiler to detect when an operator needs thunked operands, and then have it be able to generate the thunks. | |||
I don't expect that to happen before R*. | 16:31 | ||
16:31
Visitor99 joined
|
|||
lue finds out the meaning of thunks :) | 16:32 | ||
masak | the spec has some wording of that. | 16:33 | |
essentially, it's a closure but without the curlies. | |||
aye, S05:4098. | 16:34 | ||
pmichaud | essentially, it delays the evaluation of an operand until other things have occurred | ||
masak | or S05:4123, after I updated my spec dir. :P | ||
pmichaud | for example, with "$a + foo()", what happens is that we evaluate $a, evaluate foo(), and then pass the results to &infix:<+> | ||
masak | but that's a perfectly fine description of a closure, too. | 16:35 | |
pmichaud | but with something like "$a && foo()", what has to happen is that we evaluate $a, and defer the evaluation of foo() until after we know the result of $a. | ||
so, what gets passed to &infix:<&&> isn't the result of foo(), but a "thunk" that when evaluated will execute foo() and retain that value for all future evaluations. | 16:36 | ||
(the main difference between a thunk and a closure) is that the thunk always acts like the returned value, not like a closure that returns a value. | |||
lue starts to feel like he needs a cherry picker on a forklift tied to an airplane for this fruit :) | 16:37 | ||
pmichaud | i.e., one doesn't invoke a thunk more-than-once. | ||
masak | ok, heading home to nom now. I'm halfway through the second stage of the pls mini-hackathon. at this speed, I'll have finished the second stage tonight, and the third stage (a full implementation of the pls core) by tomorrow night. | 16:40 | |
lue | So, a P6 mind could think of it like $thunk := $value (?) [probably not] | ||
masak | here are the commits so far: github.com/masak/proto/commits/pls | ||
pmichaud | masak++ | ||
masak | from my last three commits, someone else could probably keep going. but please don't because I'll likely just bulldoze over you. :) | 16:41 | |
sorear | hello | ||
masak | much better if you comment on the current data model and the tests so far. | ||
16:41
snarkyboojum left
|
|||
masak | sorear: hello, goodbye. :) | 16:42 | |
16:42
masak left
|
|||
pugssvn | r31220 | sorear++ | [STDeco] reinstate 'snaptest' | 16:42 | |
sorear | the new makefile is completely in now | 16:44 | |
lue | \o/ | 16:45 | |
16:52
Sarten-X left
17:04
szabgabx joined
|
|||
lue | rakudo: say 3.WHAT ~~ Int | 17:07 | |
p6eval | rakudo ae1300: OUTPUT«1» | ||
lue | rakudo: say (3.2).WHAT ~~ Int | ||
p6eval | rakudo ae1300: OUTPUT«0» | ||
pugssvn | r31221 | sorear++ | [STDeco] 'clean' wasn't meant to be the default target... | 17:11 | |
ciphertext | rakudo: (-5 ... ^5).say | 17:12 | |
p6eval | rakudo ae1300: OUTPUT«-5-4-3-2-1001234» | ||
pmichaud | that still doesn't look right to me. There's an extra 0. | ||
lue | rakudo: say ($_ for 1..3) | 17:13 | |
p6eval | rakudo ae1300: ( no output ) | ||
lue | rakudo: say $_ for 1..3 | ||
p6eval | rakudo ae1300: OUTPUT«123» | ||
lue | rakudo: sub xyzzy($a) { say $a; } xyzzy($_) for ^3 | ||
p6eval | rakudo ae1300: OUTPUT«===SORRY!===Confused at line 11, near "sub xyzzy("» | ||
pmichaud | 'for' doesn't yet know how to return its results. | ||
It will when we change it to use .map directly. | 17:14 | ||
lue | the xyzzy thing above is the easiest way to get euler 14 working. | ||
pmichaud | need a semi after the curly above | ||
lue | rakudo: sub xyzzy($a) { say $a; }; xyzzy($_) for ^3 | 17:15 | |
p6eval | rakudo ae1300: OUTPUT«012» | ||
lue | thank you, pmichaud. | ||
17:15
envi^home left
|
|||
pmichaud | ugh ugh ugh | 17:16 | |
the new list implementation causes 'use' to fail. | |||
*sigh* | |||
pmichaud so does not want to go debugging 'use' right now. | 17:17 | ||
jnthn: ping | 17:18 | ||
lue | did the tests even run? | 17:19 | |
pmichaud | well, since "use Test" fails... no. | ||
the other sanity tests all run, yes. | |||
sorear | pmichaud: how do multiple return values and destructuring my ($x, $y) = foo(); work in Perl 6, from an implementation perspective? | ||
pmichaud | sorear: well, it's a list assignment | 17:20 | |
so, foo() returns a parcel, which is then interpreted as a list | |||
sorear | How does the process of interpreting a parcel as a list work? | 17:21 | |
pmichaud | we just iterate over the elements of the parcel, performing assignment between each container on the left and corresponding items on the right | 17:22 | |
array and hash assignment consume all of the remaining elements of the rhs list | |||
sorear | Does this iteration involve iterators? | ||
pmichaud | well, since lists imply iterators, yes :) | 17:23 | |
sorear | How does the iterator's .getarg method return both the new iterator and the value? | 17:24 | |
pmichaud | well, in the new iterator design, there's no longer a .getarg | ||
sorear | What happened to it? | ||
pmichaud | and one doesn't generally interact with the iterators directly | ||
it's now .reify | |||
if you're wanting me to match implementation to the current spec, all I can say is that both current implementation and spec are broken. | 17:25 | ||
sorear | No | ||
pmichaud | which is why I'm working (right this minute, in fact) on the new implementation+spec | ||
I don't know if I have list assignment working in the new implementation yet. | |||
sorear | I'm trying to implement multiple return values in viv-psq in the most perl6y way I can | ||
diakopter perks up | 17:26 | ||
pmichaud | all that we do in Rakudo is take whatever Parcel gets passed to 'return' and send it back to the caller. | ||
sorear | but without the infinite regress of iterators being defined in terms of multiple returns being defined in terms of iterators | ||
colomon | sorear++ | 17:27 | |
pmichaud | jnthn: ping ping ping | ||
anyone know how to turn off rakudo's exception backtrace handlers? | |||
right now "use Module" is giving me | 17:28 | ||
===SORRY!=== | |||
Method 'get' not found for invocant of class 'ParcelIter' | |||
and absolutely no information about where it's coming from. | |||
17:28
rv2733 left
|
|||
lue | BacktracePrinter.pm does that delibrately for ===SORRY!=== parse errors. | 17:28 | |
pmichaud | it can't be a parse error. | 17:29 | |
method-not-found is almost always a runtime error. | |||
either that, or I need someone to explain in detail how 'use' is currently implemented, since it's changed a lot since I last worked with it. | 17:30 | ||
sorear | 1. the parser encounters a "use" | ||
2. "need" is called in Actions.pm | |||
3. The module loader is called to load the module | |||
3. "import" is called in Actions.pm | |||
s/3/4 | 17:31 | ||
pmichaud | these all sound like nqp-methods, though. | ||
.get would be a Rakudo method. | |||
sorear | yes | ||
pmichaud | something in the process is getting hold of a Parcel | ||
and trying to improperly iterate it | |||
sorear | sounds like bootstrap stage spillage to me | ||
pmichaud | ...bootstrap stage spillage? | ||
sorear | something is interacting with the stage 1 compiler thinking it's made of rakudo | ||
pmichaud | no | 17:32 | |
wrong | |||
the stage1 compiler completes successfully | |||
I'm even able to compile the setting | |||
(because it doesn't use "use") | |||
it looks to me like need() is calling into circumfix:<{ }> | |||
so, perhaps if I disable the adverbs temporarily I can get past this. | 17:33 | ||
szabgabx | I had a 50 min talk about Perl 6 at LinuxTag, about 20 ppl came | ||
pmichaud | or perhaps the issue is that it's trying to iterate a hash somewhere. | 17:34 | |
szabgabx | I opened the talk with something like "once rakudo * is released, next week... " I hope I did not oversell too much :) | ||
pmichaud | it won't be next week. | 17:35 | |
next week is the compiler release. rakudo * comes after that. | |||
lue | .rnd(Apparently, the 11th Doctor had a hand in Patent Absurdity: patentabsurdity.com/about.html) | ||
pmichaud | (rakudo * is not solely a compiler release) | ||
szabgabx | so do you have a date already? | ||
pmichaud | sometime before the end of june. | ||
szabgabx | good | 17:36 | |
pmichaud | that's our currently plan. | ||
*current | |||
but it's not a hard deadline. we'd rather be right than on-time. | |||
szabgabx | that's still within "next week" to some value of next :) | ||
yes I know | |||
and that's what I am trying to tell people too | |||
pmichaud | a hard deadline would be end-of-july. I can't see any reason for us going beyond then. | ||
szabgabx | I'll try to go over my slides soon again and understand what is failing and if that's a bug in the examples I have or not | 17:37 | |
pmichaud | szabgabx++ | ||
szabgabx | and I'll see you at YAPC::NA | 17:38 | |
pmichaud | agreed :-) | ||
colomon | YAPC::NA! \o/ | ||
pmichaud: have you branched locally for the new iterator work? | 17:39 | ||
pmichaud | colomon: yes. | ||
I can push it to github if you'd like to follow along :) | |||
colomon | cool. | ||
I know there's a lot of stuff like hyper operators that will fail once the new iterators are in place. | 17:40 | ||
pmichaud | a huge amount of stuff fails. | ||
colomon | I think the rest of us could probably help you with that. | ||
lue | where in NA is it? | ||
colomon | lue: Columbus, Ohoi | ||
Ohio | |||
pmichaud | colomon: yes, probably. Right now the thing I'm having to do is tear out a lot of code that is in the wrong place. | ||
lots of methods were added to classes just to get things to "work" but now they're all in the wrong place and get in the way. | |||
lue | is there any way to get the largest number in an unsorted array? (preferably w/o sorting it) | 17:41 | |
colomon | lue: max | ||
sorear | [max] | ||
pmichaud | lue: max | ||
lue thinks he should look at the spec for more than 30 seconds next time :) | 17:43 | ||
colomon | max is a bit hard to find, as I recall. | ||
on the other hand, it is a very obvious name for that functionality. ;) | |||
lue | Of course, the tricky bit ends up finding the index of that value as well. Ah well, I think I'll cheat there and use a hash. | 17:45 | |
pmichaud | colomon: branch is published as "list" on github. | ||
colomon | pmichaud: thanks! | 17:46 | |
pmichaud | it passes all sanity tests but the one that checks for a working Test.pm | ||
(because 'use' is failing) | |||
I'm trying a version w/o use adverbs for now. | |||
I'm hoping to not have to make working hashes a prerequisite for using Test.pm . | |||
colomon | git branch --track list origin/list | 17:47 | |
? | |||
pmichaud | I usually do git checkout --track -b list origin/list | 17:48 | |
I think. | |||
arggh, that wasn't it. | |||
pmichaud _really_ needs a way to disable the error handler so he can see a full backtrace. | |||
pmichaud tries commenting out 'backtrace' in Perl6::Compiler | 17:49 | ||
lue | .oO(perl6 --trainingwheelsoff) |
17:51 | |
masak: ooh, I would love the tardis right now. My code hangs :( | 17:52 | ||
pmichaud | yay, that worked. | ||
colomon | interesting, I had to git pull before pmichaud++'s git checkout command would work. | 17:53 | |
pmichaud | colomon: sure, you have to since to the latest version of the repo | ||
(the version that has my branch in it :-) | 17:54 | ||
s/since/sync/ | |||
colomon | compiling branch list now. | ||
pmichaud | aha, I see the problem. | 17:55 | |
parrot iterators | |||
colomon | I will be in the car soon (I hope), but I won't be driving, and I think I've got it worked out how to tether the laptop to the Droid and get Internet in the car. (Not Yet Tested, I admit.) | 17:56 | |
gotta go finish packing now, actually. | |||
dalek | meta: r324 | diakopter++ | trunk/Sprixel/ (3 files): [perlesque] completed generic method/constructor handling on .NET. still some |
17:58 | |
lue | goodluck, colomon | 18:00 | |
pmichaud | tethering generally worked for me when I was using my Ericsson phones :) | 18:12 | |
haven't tried it with the Nexus yet. Also waiting for Froyo to be released. | |||
lue | I'm waiting for a MeeGo phone :) | ||
[I could also by a Nokia N900 and then install meego on it...] | |||
ciphertext | > (4 ... ^5).join(", ").say | 18:14 | |
4, 3, 2, 1, 0, 1, 2, 3, 4 | |||
lue | \o/ | 18:17 | |
18:37
lue left
18:39
lue joined
|
|||
lue | afk | 18:39 | |
diakopter | [OT] the frequency with which newswriters/speechwriters use "unprecedented" is unprecedented. horrifically so. | 18:42 | |
pugssvn | r31222 | sorear++ | [STD,viv] Parse space in regexes uniformly; %*RX<s> is handled in the backend like all other regex options. Fix several exposed bugs. | 18:44 | |
18:49
Ross^ joined
|
|||
sorear | unlike the last time I tried to implement it, this time it works | 18:49 | |
18:49
Ross^ left
18:51
whiteknight left
|
|||
pugssvn | r31223 | sorear++ | [STD] Parse quantifiers separated from their atoms by whitespace correctly | 19:04 | |
r31223 | [viv] Remove the ugly <.ws>* reassociation hack | |||
19:04
cono left
19:06
masonkramer joined
|
|||
sorear | std: 2+2 | 19:06 | |
p6eval | std 31197: OUTPUT«ok 00:01 105m» | ||
19:06
cono joined
|
|||
diakopter | sorear: hrm | 19:07 | |
that's kinda old | |||
like, 20 hours old | 19:08 | ||
perhaps the makefile is missing something | |||
19:10
colomon left
|
|||
diakopter | sorear: it does make clean ; make snap | 19:10 | |
is that sufficient? | |||
the rebuild-std script on p6eval, I mean. | |||
sorear | make snap is gone | ||
diakopter | ah :) | 19:11 | |
that would do it | |||
sorear | I thought it was an implementation detail of snaptest, so I killed it in the great refactor | ||
diakopter | I think TimToady uses it locally to snapshot then test individual things | ||
used | 19:12 | ||
so what should it be now | |||
just `make` ? | |||
19:16
isBEKaml left
|
|||
sorear | I'll put snap back | 19:16 | |
diakopter | oky | 19:17 | |
sorear: btw, the pugs websvn is slow only the first hit to each revision's page; the html is cached after that | |||
19:18
diakopter sets mode: +v dalek
|
|||
pugssvn | r31224 | sorear++ | [STD] Parse ~ as a pseudo quantifier so it associates with the right atoms in the first place | 19:21 | |
r31224 | [viv] No more reassociation! | |||
19:22
pronik joined
|
|||
diakopter | sorear: cool | 19:23 | |
diakopter tries to grok DEEP | 19:24 | ||
wow. | 19:25 | ||
sorear | right now, DEEP is mostly being used as an enabling technology for optimizations | 19:28 | |
it allows the backend to do context-sensitive code generation without having to reparse generated code | |||
pugssvn | r31225 | sorear++ | [STDeco] Re-refactor snap out of snaptest | 19:32 | |
diakopter | sidenote: I think since mildew is using STD directly, mangle.pl can now be merged somewhere if you want | ||
(I think it was separate for a couple of years so others could use updated versions of it while using a snapshot of STD) | 19:33 | ||
others, including sprixel-js, mildew, and redsix | |||
sorear | mangle.pl is used by CursorBase, STD, and viv | ||
diakopter | ok | ||
sorear | make snap should work now | 19:34 | |
diakopter | it'll run at :37 | ||
erp | |||
except the time on that machine appears to be very off :) | |||
no wonder folks have had confusion about the cron | 19:35 | ||
:) | |||
masonkramer | rakudo: Q :w/not yet?/ | 19:37 | |
p6eval | rakudo ae1300: OUTPUT«===SORRY!===Colons may not be used to delimit quoting constructs at line 11, near ":w/not yet"» | ||
masonkramer | rakudo: Qw// | 19:38 | |
p6eval | rakudo ae1300: OUTPUT«===SORRY!===Confused at line 11, near "Qw//"» | ||
19:39
masak joined
|
|||
masak | ahoy, #perl6! | 19:40 | |
diakopter | hiz | ||
sorear | Hi! | ||
masonkramer | ahoy | ||
masak | and now... isn't it time for some self-criticism? fixingsoftware.blogspot.com/2010/06...o-bar.html | ||
sorear reads up on .NET aggregate types | |||
19:41
eternaleye left
|
|||
masak | I will refrain from taking up too much of your time with ank's confused ramblings in the future. but I just wanted to show you this as the prime exemplar of a person who Just Won't Give Up. | 19:41 | |
sorear | frankly, I don't care | ||
masak | there is something rotten in the state of Perl 6, and he'll be damned if he can't show it to the world! | ||
sorear | "make the world use Perl 6" is not my agenda | 19:42 | |
"make Perl 6 awesome" is | |||
masak | sorear++ | ||
sorear: I, for one, welcome that kind of lack of humility! :) | |||
sorear | plus, he has his facts wrong. chromatic is not | 19:43 | |
"Mr. Christopher" | |||
masak | right. | ||
sorear | I know chromatic's first and last names, neither of them is Christopher | ||
masak | I also reflected on that. | 19:44 | |
the whole thing is reminiscent about the guesses of _why's "true" identity. | |||
it must be tough-ish to uphold an internet persona and stay pseudonymous. | 19:45 | ||
diakopter | sorear: generally, the generic aggregate types are preferred over the non-generic ones, since the generic ones are optimized to obviate the need for boxing/unboxing | ||
(not just optimized in the source language, but treated specially by the JIT) | 19:46 | ||
sorear | eew. | ||
diakopter | what's eew about it? | ||
sorear doesn't like compilers with special knowledge of the code they're compiling | |||
diakopter | I could have stated it another way, you know :P | 19:47 | |
sorear | no, I didn't? | ||
masak | rakudo: say (-5 ... ^5).perl | ||
p6eval | rakudo ae1300: OUTPUT«(-5, -4, -3, -2, -1, 0, 0, 1, 2, 3, 4)» | ||
diakopter | std is rebuilding, I think | ||
sorear | Are "dynamic" and "System.Dynamic" synonymous? | ||
masak submits rakudobug | |||
diakopter | sorear: well... you're not going to want to use dynamic | 19:48 | |
mono 2.6.4 doesn't really support it | |||
mono svn supposedly does | |||
besides, it's a C# keyword | |||
sorear: I'm curious to see what you have so far | 19:49 | ||
I think I would have some good comments on it | 19:50 | ||
I suspect you're compressing the compilation into few layers than I had in mind. not that that's wrong, it's just not what I had in mind... and I think it'd be good to discuss it | 19:51 | ||
few*er | |||
System.Dynamic is a namespace, not a type | 19:52 | ||
sorear | 1. declarations are carried over into perlesque output, but types are mapped. Any becomes System.Dynamic, Str becomes some string class, etc | 19:54 | |
diakopter | I was going to treat perlesque like a "black box" language, so that the emit-psq layer wouldn't have to know _anything_ about the .NET framework | ||
:( | |||
I think it's going to have to be much more unsugared than that | |||
System.Dynamic isn't a type | |||
sorear | yeah | ||
I just found out | |||
which derails some part of my plans | 19:55 | ||
diakopter | see what I wrote above | ||
about mono | |||
sorear | yes | ||
that's how I found out | |||
diakopter | oh :) | ||
std rebuild got an error | |||
Can't locate CORE.pad in @INC (@INC contains: stage2/ . /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at CursorBase.pm line 299. | |||
make: *** [stage3/Cursor.store] Error 2 | |||
when trying: cd stage0 && ./std CORE.setting | |||
oh, hrm, maybe it didn't svn update | 19:56 | ||
well no, it would have had to | |||
sorear: we'll need an entire metaobject layer (or more) | 19:57 | ||
sorear | cd stage0 && ./std CORE.setting is not part of the commands for stage3/Cursor.store | ||
diakopter | I reversed the lines. | ||
cd stage0 && ./std CORE.setting | |||
then the two error lines. | |||
sorear | that makes even less sense | 19:58 | |
diakopter | note, the compilation is still proceeding | ||
apparently | |||
ok, it stopped | 20:02 | ||
sorear | can you nopaste the transcript? | ||
diakopter | ok | 20:03 | |
ok, odd | |||
apparently it's.... | |||
erm | |||
two rebuilds were occuring. either the cron one stomped on mine or vice versa | |||
:) | |||
I'll wait for this one to finish (or fail) | 20:04 | ||
20:04
Psyche^ joined
|
|||
sorear | now /that/ makes some kind of sense | 20:04 | |
diakopter | sorry :( | ||
sorear: I firmly believe we'll need a metaobject layer for declaration/accessing/invoking everything but strongly typed/primitive routine-locals | 20:05 | ||
masak | rakudo: say (-5 ... 5).perl | 20:06 | |
p6eval | rakudo ae1300: OUTPUT«(-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5)» | ||
masak | aha! | ||
diakopter | sorear: or even perhaps without that exception | ||
sorear: and that metaobject layer will need manually written in either C# or perlesque (doesn't matter much) | 20:07 | ||
and that metaobject layer will look very similar to rakudo's and smop's | |||
..speaking loosely/hand-wavingly.. | 20:08 | ||
20:08
Patterner left,
Psyche^ is now known as Patterner
|
|||
sorear tries to imagine a meta object layer | 20:09 | ||
diakopter | smop's is detailed in the perl6 wiki on tpf's site | 20:10 | |
www.perlfoundation.org/perl6/index.cgi?smop | 20:11 | ||
20:12
tlb joined
|
|||
diakopter | www.perlfoundation.org/perl6/index....ementation and www.perlfoundation.org/perl6/index....mop_oo_api | 20:13 | |
sorear | yeah I've read all the smop stuff | 20:14 | |
pretty trippy is all I can say :/ | |||
diakopter | well, much of it is spec'd, and much of it is implemented in rakudo | ||
the p6opaque stuff anyway | |||
afaik. | 20:15 | ||
sorear: I think you're trying to *implement* Perl 6 in the emit-psq step | 20:19 | ||
that's not what I had in mind at all | |||
I think there should be a special emit-std-psq for bootstrapping | 20:20 | ||
so that we can get std running on mono alone first... and then start actually implementing Perl 6 | 20:21 | ||
masonkramer | -> %h { say %h }.("a" => "b") | ||
eval: -> %h { say %h }.("a" => "b") | |||
sorear | STD is written in Perl 6 | ||
masonkramer | rakudo: -> %h { say %h }.("a" => "b") | ||
p6eval | rakudo ae1300: OUTPUT«Nominal type check failed for parameter '%h'; expected Associative but got Pair instead in <anon> at line 1:/tmp/wgJWOBVpOb in main program body at line 11:/tmp/wgJWOBVpOb» | ||
diakopter | sorear: and? | ||
20:22
mrsaturn joined
|
|||
sorear | I need to implement /some/ of Perl 6 in emit-psq | 20:22 | |
Otherwise std-psq will not work | |||
diakopter | ok. | ||
here's an idea I discussed with TimToady on that | |||
make every variable in STD.pm6 strongly typed (he said he suspected it could be) | 20:23 | ||
sorear | you're one step ahead of me | ||
I considered that, but thought there was no chance he'd support... | |||
diakopter | iiuc he said that would be just fine | 20:24 | |
jnthn also (half tongue-in-cheek) commented that it would make copying/pasting from STD to rakudo slightly slower :) | 20:25 | ||
that way you wouldn't need Any or even Cool | |||
see, I don't want "Any" or "Cool" to be .NET types | 20:27 | ||
(types written in Perlesque as classes) | 20:28 | ||
I think they should be part of our own responder/type system | |||
one pointer away from the .net object system | |||
20:29
mrsaturn left
|
|||
diakopter | I know how to emit code for the polymorphic inline caching at callsites | 20:29 | |
but that's an optimization | |||
(for later) | |||
ciphertext | masak: see rt.perl.org/rt3/Ticket/Display.html?id=75674 (esp. last post) re double zeros | ||
masak | ciphertext: oh, ok. | 20:30 | |
20:31
clintongormley left
|
|||
diakopter | sorear: (see above also).. I suspect the base perlesque/.net type/class could be called "p6o" or something, short for object or opaque. | 20:31 | |
and we'd create the p6o type system on top of that | 20:32 | ||
sorear: it'd be up to the compiler if it wants to lift p6 class storage to a .net class itself, itself perhaps a slot in p6o | 20:33 | ||
but again, an optimization | |||
sorear: as long as the compiler is emitting to a strongly-typed language (perlesque), and it gets the type mapping correct in the primitive types, there shouldn't be any [additional] casting overhead over what would occur in looks-similar code compiled from C# | 20:35 | ||
sorear | we might want a different name | 20:36 | |
diakopter | ok :) you pick | ||
sorear | the 'p' in p6opaque officially stands for pmichaud | ||
not perl6 | |||
diakopter | really?? :) | ||
I didn't know that | |||
masak | news to me too. | 20:37 | |
but it makes sense, what with PmWiki, and PGE. :P | |||
conquering the world, one P at a time... | |||
at least we have PCT, which... OH NOES! | 20:38 | ||
diakopter | sorear: where'd you read that | ||
sorear | one of the irc channels. looking for specifics now | 20:40 | |
masak | sorear: how do you explain the 6 in p6opaque? it's not like there were 5 prior versions of pmichaud. | ||
diakopter | pmichaud: does "p6o" as our root type borrow too much from p6opaque? | ||
sorear | aha | 20:41 | |
2010.03.11.13.03.26 <@pmichaud> lichtkind: perhaps others claim that, but I don't. For me, "p6object" was always meant to be "perl-6 like objects" | |||
2010.03.11.13.03.42 <@pmichaud> and I used "p6" instead of "Perl6" to explicitly designate that this was a lightweight version. | |||
sorear stands corrected. | |||
diakopter | hee | ||
diakopter giggles | |||
maybe just "po" then | |||
as in "po'" | 20:42 | ||
sorear | the wrong version seems to have orriginated from trac.parrot.org/parrot/wiki/ParrotQuotes | ||
masak | sorear: I think that some of the quotes in there are not meant seriously. | 20:44 | |
just a thought. :P | |||
diakopter | www.perlfoundation.org/perl6/index....collection apparently "Buy Wellbutrin" are one the List of immortal values | 20:46 | |
20:46
eternaleye joined
|
|||
masak | :D | 20:46 | |
thrice! | |||
20:49
colomon joined
|
|||
colomon | woah. | 20:50 | |
diakopter | ? | ||
tethering works? | |||
colomon | Yup. | ||
even seems to be pretty quick, relatively speaking. | 20:51 | ||
masak | surely it's in order that mocking classes in one's test files break encapsulation? it feels so right. | ||
20:53
Su-Shee left
|
|||
masak | after thinking about it, I have concluded that in the 'test phase' of an install process of project A and all of its dependencies, tests of all the projects should be run; but when one writes `pls test A`, one doesn't want the deps to be tested, at least not by default. | 20:55 | |
it's a bit strange, and only the 'test' subcommand behaves like this. | |||
but it appears to be what the user would expect. | 20:56 | ||
probably `pls test --with-deps A` would make the behaviour consistent again. | |||
20:58
awwaiid left
|
|||
colomon | masak: has ank ever provided any sort of argument why too many operators is bad? It feels like he keeps on responding to fairly good arguments with "Why won't you admit you're wrong?" rather than advancing any arguments of his own. | 21:01 | |
masak | yes, he has hinted at some paper or other that he read once. | 21:02 | |
colomon | jaysus, he read a paper! we'd better shut down perl 6 development asap. | 21:04 | |
masak | when chromatic confronted him, he almost remembered which paper it was: use.perl.org/comments.pl?sid=44783&...2028#72029 | 21:05 | |
oh, look! he did the same with me once! www.twitlonger.com/show/4p4kr | 21:07 | ||
anyway, it must have been a really convincing article for him to be so adamant about it. | |||
21:09
Guest55077 left
21:10
lucs left
|
|||
PerlJam | too many operators overload the symbolic processor in our brains because it circumvents the parts of our brain that deal with language. | 21:10 | |
oh wait ... I just made that up ;-) | |||
jnthn | evening, #perl6 | 21:11 | |
masak | I'll be the first to agree that Perl 6 is not to be taken in all at once. | ||
colomon | jnthn: o/ | ||
PerlJam | masak: what language worth learning is? | ||
diakopter | I just looked at all occurrences of "operators" and "operator" in the 2008 edition of Parsing techniques: a practical guide (the book to which he seems to refer), and none of them seems to refer to number of operators, or a paper on such | 21:12 | |
21:12
masonkramer_ joined
|
|||
diakopter | oh, 1st edition. | 21:12 | |
sigh | |||
21:14
lucs joined
|
|||
masak | but as one who use many of the operators on a daily, weekly or monthly basis, I can think of few actual improvements to the set we currently have. but I guess one could argue that I'm blind to the downsides due to overexposure, or something. :P | 21:14 | |
colomon | hmmm, pmichaud++ doesn't seem to have converted very many of the iterators yet. | 21:15 | |
masak | I have a feeling he's working on it locally, and waiting to push until he has a substantial fix. | 21:17 | |
PerlJam | that's his typical modus operandi | 21:18 | |
Why does ank keep calling chromatic "Mr. Chistopher"? | 21:19 | ||
masak | my guess is because he thinks that's his real name. | ||
and because he thinks that by using his real name, he infuriates or exasperates chromatic. | |||
in a way the two are an interesting match, because chromatic keeps returning to the actual topic at hand, ignoring the personal attacks. | 21:20 | ||
diakopter | std: 2+2 | ||
p6eval | std 31225: OUTPUT«ok 00:01 105m» | 21:21 | |
diakopter | sorear: it workethd | ||
masak | std: 2<2 | ||
p6eval | std 31225: OUTPUT«===SORRY!===Whitespace required before < operator at /tmp/aSbkzXSrpe line 1:------> 2<⏏2 expecting escapeParse failedFAILED 00:01 104m» | ||
colomon | masak: he's pushed a branch already, so no problems with partial fixes | 21:22 | |
masak | colomon: oh! ok. | 21:23 | |
jnthn | Oh, we have a list refactor branch? | ||
colomon | yes | ||
called list | |||
masak | I must say I like working in a branch and rebasing/merging on a weekly basis, by the way. it works really well. | 21:24 | |
colomon | git++ | ||
jnthn | Today's hackmeet was quite a win. :-) | 21:26 | |
colomon | jnthn++ | 21:27 | |
I love seeing all the patches from today. | |||
jnthn | Gave 3 people spectest commit bits - which I think all of them used. | ||
pronik | hi guys, what's up with all the french quotes in perl6? I.e. are those official or currently deprecated in favour of double angle brackets? | ||
jnthn | pronik: You may use either. | ||
One person today with relatively little assistance implemented "cando" too. :-) | 21:28 | ||
Though had network problems. | |||
masak | \o/ | ||
jnthn | I worked with them on some initial handles support too | ||
moritz_ | \o/ | ||
pronik | jnthn: and which is preferred? timtowtdi, I know, but which would be preferred for official docs and/or a book? | ||
jnthn | pronik: I don't feel strongly either way. Personally I use the >> because it's easier for me to type. | 21:29 | |
moritz_ | pronik: I find » better to read than >> | ||
jnthn | And I'm lazy. | ||
moritz_ | pronik: for example if you have a hash value that holds a list, like $h<foo> | ||
than $h<foo>».meth clearly beats $h<foo>>>.meth | 21:30 | ||
jnthn | moritz_: Yes, in that case it is nicer visually. | ||
masak | std: my %h; %h<foo>>>.meth | ||
p6eval | std 31225: OUTPUT«ok 00:01 105m» | ||
moritz_ | both work in rakudo | ||
jnthn | Yeah, that one always looks a tad odd to me, even though it parses just fine. | ||
masak | :) | 21:31 | |
moritz_ | hugme: add /w 19 | ||
sorry | |||
hugme: add rassie to book | |||
hugme hugs rassie. Welcome to book! | 21:32 | ||
moritz_ | pronik: you now have commit access. Welcome! | ||
21:36
pronik` joined,
foodoo left
|
|||
pronik` | thanks, gotta kill that private clone of mine then :) | 21:36 | |
moritz_ | rakudo: say { :$^p }.(5).perl | ||
p6eval | rakudo ae1300: OUTPUT«"p" => 5» | ||
moritz_ | \o/ | 21:37 | |
21:37
tlb left
21:38
pronik left
|
|||
dalek | meta: r325 | diakopter++ | trunk/Sprixel/src/Grammar/ParseEnv.cs: [perlesque] add ParseEnv.cs |
21:40 | |
21:40
pronik` is now known as pronik
|
|||
jnthn | moritz_: Yes, that was another patch from today :-) | 21:44 | |
masak | anyone else get this? I'm just loading a class through a module, calling a method on it. Null PMC access. gist.github.com/436120 | 21:48 | |
it feels strange that something like this would go unnoticed for very long. maybe my local build is corrupted somehow. | 21:49 | ||
moritz_ gets the same | 21:50 | ||
masak submits rakudobug | |||
jnthn | Me too...wtf. | ||
21:50
Schwern left
|
|||
jnthn | How can that be broken when, like, so much other stuff works... | 21:51 | |
sorear | How about we just give a* what he deserves? | ||
masak | as you can see, I'm writing new code today. :) that's when one discovers all the 'obvious' bugs. | ||
sorear | Which is to say, no attention at all. | ||
masak | sorear: I'm sure that's what many people are doing. | ||
21:51
azert0x joined
|
|||
moritz_ | sorear: +1 | 21:51 | |
lue | ohai | ||
masak | lue: \o | 21:52 | |
PerlJam | rakudo: class A { method x {} }; say A.new.x | ||
p6eval | rakudo ae1300: OUTPUT«Null PMC access in type() in main program body at line 11:/tmp/w1nvqVvliJ» | ||
PerlJam | rakudo: class A { method x {return} }; say A.new.x | ||
p6eval | rakudo ae1300: OUTPUT«» | ||
masak submits another rakudobug | |||
those two are distinct. | |||
jnthn | Really? | ||
oh, yes, I think they are. | |||
masak | oh wait. no. | 21:53 | |
PerlJam++'s is an easier case of mine. | |||
jnthn | oh, yes is | ||
grr | |||
It's probably the same old "null return" thing. | 21:54 | ||
colomon | rakudo: class A { method x { 1; } }; say A.new.x | ||
PerlJam | seems so. | ||
p6eval | rakudo ae1300: OUTPUT«1» | ||
PerlJam | rakudo: class A { method x { ; } }; say A.new.x | ||
p6eval | rakudo ae1300: OUTPUT«Null PMC access in type() in main program body at line 11:/tmp/SoVGGweExB» | ||
masak | rakudo: sub x {}; say x | 21:56 | |
p6eval | rakudo ae1300: OUTPUT«Null PMC access in type() in main program body at line 11:/tmp/e0DIBA8uvz» | ||
masak | rakudo: say {;}() | 21:57 | |
p6eval | rakudo ae1300: OUTPUT«Null PMC access in type() in main program body at line 11:/tmp/KyEFDiHm1x» | ||
21:57
azert0x left
|
|||
masak | golf :) | 21:57 | |
lue | golf? | ||
masak | lue: en.wikipedia.org/wiki/Golf | 21:58 | |
it's a sport involving clubs and a ball. | |||
an attempt is made to get the ball into a hole with a minimum number of strokes. | |||
22:01
colomon left
|
|||
lue | :) | 22:01 | |
were you golfing in P6 then? | 22:02 | ||
22:03
azert0x joined
|
|||
masak | because small examples of an error have many advantages over large examples of the same error. | 22:03 | |
22:03
azert0x left,
azert0x joined,
azert0x left
|
|||
jnthn | time for some rest...night o/ | 22:04 | |
masak | jnthn: 'night! | ||
ingy | hi | ||
masak | ingy! \o/ | ||
ingy | hi masak | ||
22:04
azert0x joined,
azert0x left
|
|||
ingy | I hacked with leto a couple nights ago in portland to add PIR support to C'Dent | 22:05 | |
masak | a small piece of code highlights the error better. it's less to understand. it's easier to copy/paste, or write anew. it's easier to put in a test, or in a nopaste after the bug's been fixed. | ||
lue: those are a few reasons. | |||
ingy: cool! I think I saw someone mention the idea on Twitter. | |||
lue | .oO[ i.e. Gtk::Add(REROUTE::Qt::4::Integer(3)) is worse that 3+ :) ] | 22:06 | |
PerlJam | ingy++ | ||
22:06
azert0x joined
|
|||
ingy | not only can you compile py js and p6 to pir, you can compile pir to a dozen languages | 22:07 | |
with full HelloWorld support! | |||
:) | |||
masak | \o/ | ||
ingy | masak: going to YAPC? | 22:08 | |
masak | which one? | ||
ingy | NA | ||
masak | no :( | ||
ingy | nod | ||
masak | will try to make it to EU, though. | ||
ingy: we still need a YAML parser for Perl 6 :) | |||
I think all the obstacles on the grammar side have been removed by now. | 22:09 | ||
we have variable interpolation and variables in closures in regexes. | |||
ingy: would you like to be part of an effort to write one? | |||
ingy | masak: yes | ||
masak | ingy: I have a feeling you know which tests to use to get started. | ||
and I also have a feeling both moritz_ and I will gladly help in such a project. :) | 22:10 | ||
ingy | we should write the tests in TestML and get that working in p6 | ||
22:11
azert0x left
|
|||
masak | sure. if you think that's the easiest route. | 22:11 | |
ingy | that way the same tests can be applied everywhere | ||
in the long run, yes | |||
masak | I was kinda hoping there'd be some existing test suite one could port... | ||
ingy | well sure | ||
lue | .oO(Yet Another......Meta Language?) |
22:12 | |
masak | which one would you recommend among those? | ||
ingy | Test::Base *is* TestML | ||
masak | right. | ||
ingy | and there are lots of tests already in that | ||
masak | for YAML? | ||
ingy | yes | ||
YAML.pm etc | |||
masak | there's a proliferation of YAML modules out there. sometimes it's difficult to sort out which one to adopt as a role model. :) | 22:13 | |
ingy | masak: indeed | ||
let's make the P6 one the role model | |||
:) | |||
hey | 22:14 | ||
masak | hey! | ||
ingy | can P6 bind to C libs? | ||
lue | What does YAML stand for? | ||
masak | Rakudo can, through zabolaj. | ||
ingy | if so, we absolutely must use libyaml | ||
masak | lue: are you in a location where Google doesn't work? :) | 22:15 | |
ingy: see? you're already helping! :) | |||
ingy | masak++ # lol | ||
lue | Last time I checked, Google worked in California :) | ||
masak | lue: well, use it! :P | ||
ingy | YAML Ain't Markup Language | ||
srsly | |||
masak | lue: meet Mr. YAML: ingy-san himself. | 22:16 | |
ingy | masak: you are in .no? | ||
masak | close. .se | ||
ingy | ah | ||
lue | .oO(bad time to forget the Japanese honorific for someone above you.) |
||
ingy | maybe there's a way to get me out there | 22:17 | |
to hack for a couple weeks sometime | |||
masak | my floor is at your disposal. | ||
ingy | :D | ||
masak | \:D/ | ||
22:17
masonkramer_ left
|
|||
ingy | are you in stockholm? | 22:17 | |
masak | close. Uppsala. :) | ||
22:18
awwaiid joined
|
|||
ingy | keep it in mind. I am rich in time right now. | 22:18 | |
masak | the Arlanda airport is actually situated closer to Uppsala than to Stockholm. little-known fact. | ||
ingy: you are? and you're willing to spend some of it on p6? | |||
that's great news! | |||
I have, like, so many projects! | |||
ingy | I have 42 projects | 22:19 | |
masak | ingy: have you heard about the time-travelling debugger? the Perl 6 grammar engine written in Perl 6? the... :) | ||
ingy | I guess I could add some.... | ||
masak: Have you heard of Ingy's PYRL? | |||
masak | 不是. I haven't. | 22:20 | |
ingy | ingy.pyrl.org/ | ||
PYRL == Project's You'll Really Like | |||
err | |||
masak | nice! | ||
ingy | s/'// | ||
masak | "Overzealous Apostrophe" would be a cool name for a rock band. | 22:21 | |
ingy | masak: acmeism.org/ | ||
masak | that one, I've seen. | ||
kudos. | |||
we need more synergy in the world. it gets so boring when people trench down and go all language-y. | |||
ingy | masak: by definition, I am willing to spend time on P6 | ||
as long as I can do it in Python | |||
masak | sure! | 22:22 | |
ingy | ;) | ||
masak | that's fine by me. | ||
22:22
tomaw left
|
|||
lue | (Let's code a P6 interpreter for the SNES and vice versa!) | 22:25 | |
22:30
Ross left
|
|||
lue | rakudo: $x = 5; given $x { when 5 { say "o";}; else { say "X";};}; | 22:32 | |
p6eval | rakudo ae1300: OUTPUT«===SORRY!===Symbol '$x' not predeclared in <anonymous>» | ||
lue | rakudo: my $x = 5; given $x { when 5 { say "o";}; else { say "X";};}; | ||
p6eval | rakudo ae1300: OUTPUT«o» | ||
masak | er. | ||
right. that works because the sub &else is never called. | |||
lue: not to go all RTFM-y on you, but... may I recomment a refreshing re-read of S04 :) | 22:33 | ||
s/recomment/recommend/ | |||
lue: also, you don't need semis after *every* closing curly. just those who preceed a statement. | |||
s/who/which/ | 22:34 | ||
22:34
astrojp joined
22:36
masak left
|
|||
lue | Considering given/when apparently works, I only need := binding. | 22:38 | |
pmichaud | good afternoon, #perl6 | 22:41 | |
diakopter | how. | ||
22:41
tomaw joined
|
|||
lue | bon apres-demain! | 22:43 | |
22:57
jhuni left
|
|||
sorear | I need a syntax for assigning a static type to a contextual. | 22:58 | |
diakopter | eh? | 22:59 | |
sorear | When STD.pm6 talks about $*CURPAD, what is the type of that expression? | 23:01 | |
after translating to perlesque | |||
diakopter | how about FrameScope | 23:02 | |
it's an inheriting hash | |||
with all the methods you'd expect | |||
sorear | how about what? | ||
diakopter | is CURPAD some kind of symbol table? | 23:03 | |
sorear | if it has type FrameScope, can I call Stash methods on it? | ||
diakopter | what is "Stash" | ||
sorear | Stash is a class defined in Stash.pm6 | 23:04 | |
It represents a compilation symbol table | |||
diakopter looks | |||
sorear | $*CURPAD is a dynamically scoped variable which points to the current definition symbol table | ||
diakopter | I'm sure I can translate those to the FrameScope equivs | ||
sorear | actually it's defined in Stash.pmc | 23:05 | |
How about $*IN_DECL? It's a boolean. | |||
diakopter | bool I guess | ||
sorear | u15:58 < sorear> I need a syntax for assigning a static type to a contextual. | 23:06 | |
15:59 <@diakopter> eh? | |||
it's the syntax I need, not the type mapping... | |||
Visitor99 | hi... anyone knows a good tutorial on perl6 'rules'? | ||
diakopter | sorear: oh; sorry :) sec... | ||
23:07
masak joined
|
|||
diakopter | sorear: oh, true is 1; false is 0; I'm almost certain runsharp does that lowering | 23:07 | |
if not I'll just make keywords... | |||
sorear | What question did I ask? | 23:08 | |
masak | Visitor99: perlgeek.de/blog-en/perl-5-to-6/07-rules.html | ||
sorear | You're not answering the question I'm *trying* to ask... | ||
masak | Visitor99: perl6advent.wordpress.com/2009/12/1...gex-story/ | ||
diakopter | sorear: explain 'static type' more | ||
Visitor99 | thanks! bookmarked :) | ||
23:09
Visitor99 left
|
|||
sorear | diakopter: perlesque needs to know the type of every expression. true or false? | 23:09 | |
diakopter | correct. | ||
masak | Visitor99: also, looking at solid examples is a good idea: github.com/moritz/json/tree/master/...JSON/Tiny/ | ||
sorear | diakopter: if $*SOMETHING appears in the Perl6 source, what should it translate to in output? | ||
diakopter | whatever type $*SOMETHING was originally declared as (or initialized to) | 23:10 | |
sorear | $* variables in Perl6 are not and cannot be declared | 23:11 | |
so they can't be declared as being of any type | |||
diakopter | std: my int $*hi | ||
p6eval | std 31225: OUTPUT«ok 00:01 104m» | ||
sorear | afk | ||
diakopter | (I'm not trying to flippantly prove you wrong, but I do want to know whether std is correct here) | 23:12 | |
I realize they are not "declared" | |||
but upon first stumbling upon them in the source code, a perlesque compiler can infer its type at that point. | 23:13 | ||
it's fine that perlesque differs from p6 on this very minute point... I don't see a problem with declaring a type for all the contextuals used in STD | |||
er, dynamics | 23:14 | ||
23:16
mberends joined
|
|||
diakopter | mberends: hi | 23:16 | |
masak | rakudo: .say for @*IN.lines | 23:17 | |
p6eval | rakudo ae1300: OUTPUT«Method 'lines' not found for invocant of class 'Failure' in main program body at line 11:/tmp/js9V0TWu5E» | ||
mberends | hi diakopter, just rolled in from Calais :) it was a nice Perl Workshop | ||
hi masak | |||
masak | rakudo: .say for $*IN.lines | ||
p6eval | rakudo ae1300: OUTPUT«Land der Berge, Land am Strome,Land der Äcker, Land der Dome,Land der Hämmer, zukunftsreich!Heimat bist du großer Söhne,Volk, begnadet für das Schöne,vielgerühmtes Österreich,vielgerühmtes Österreich!Heiß umfehdet, wild umstrittenliegst dem Erdteil du inmitten,einem | ||
..stark… | |||
masak | mberends: hi mberends! \o/ | ||
mberends | masak: I was thinking of your pls questions as needing a state diagram to unify all the answers | 23:18 | |
masak | mberends: feel free. I'm mostly question-free at the moment. | ||
mberends: did you backlog over my 'pls test' paradox resolution? | 23:19 | ||
mberends | ok, I'll try my ascii-art skillz. no, still need to backlog (about 2.5 days) | ||
23:19
Visitor99 joined
|
|||
masak | mberends: try ditaa.sourceforge.net/ :) | 23:20 | |
mberends: basically though, App::Pls::Core is a state machine, following preset rules to update the states of all the projects in parallel. | |||
mberends | masak: nice tool. Yes, state machine is appropriate. However, there may be some situations where states cannot be expressed in a single state variable. For example, an installed project may or may not still be present in cache. | 23:23 | |
masak | mberends: here are the implicit rules that I have arrived at so far (1) a subcommand can never 'lower' a project's state. (2) generally, a failed subcommand results in no change in project states, or at least a consistent set of states. (3) states of project hierarchies are updated "in synch", so all are fetched before they're built, etc. | ||
mberends: my mental model does not yet incorporate the cache, because the cache is not something that the core knows about. | 23:24 | ||
but, hm. let's see. that doesn't sound like a project. | |||
the only time that's relevant is during an upgrade. | |||
mberends | masak: in theory ok, but it may be that in practice there are funny corner cases that need explicit handling | ||
masak | hence the tests. | 23:25 | |
mberends | :) | ||
masak | and due to rule (1) above, upgrades have to be very roll-backable. | ||
a failed step during an upgrade must revert the project state to 'installed'. | |||
mberends | ok, so the upgrade needs to be careful to be able to roll back perfectly | 23:26 | |
masak | yes, but I think that's OK, since in both types of install, the installed stuff is sort of on a 'higher level' untouchable by all worldly affairs. | 23:27 | |
unless, hm. | |||
unless the install itself fails. | |||
then I guess the state has to be reset to 'tested' after all. huh, that feels a bit odd and wrong. | 23:28 | ||
mberends | it's impossible to guarantee 100% reliability. But if something fails, it's important to detect that and notify the user. | ||
masak | oh, sure! | ||
that's the whole idea of this. we make the core sturdy enough to handle all eventualities. | |||
mberends | +1 | 23:29 | |
masak | mberends: have you seen the tests I've been writing today? | ||
I think they might interest you. | |||
mberends | not yet. They do interest me, a lot. | ||
masak | gist.github.com/masak/proto/tree/pl...bcommands/ | ||
mberends | btw, is the 'install Rakudo' functionality going to be dropped? | ||
masak | depends what you mean. | 23:30 | |
in the bootstrapping phase, yes. | |||
people complain about it, and I agree with them. | |||
mberends | ok, we don't want confusion and rakudo.org/how-to-get-rakudo is the 'official' guide | 23:32 | |
masak | yes. the error message when 'perl6' isn't in path could mention that. | ||
by the way, I was thinking I'd write tests for the error messages as well. | 23:33 | ||
soon as I'm done with the core. | |||
mberends | masak: that's a nice buncha tests :) | 23:35 | |
lue | .oO(I'm thinking, actually, if you were to write a module installer in P6, then you automagically fulfill the P6 requirement) |
||
masak | lue: not sure I follow you there. | ||
mberends: thanks! I like working this way. it breaks TDD, but I can see advantages of thinking through the tests needed beforehand. | 23:36 | ||
lue | You cannot run a P6 module installer written in P6 if you do not have P6. | ||
masak | mberends: sometimes I add or remove some when fleshing out the tests. | ||
lue: that is correct. but proto had a Perl 5 wrapper which installed Parrot and Rakudo for you if it couldn't find them. | 23:37 | ||
lue | So, Proto is in P6? I could swear it was P5... | 23:39 | |
masak | the wrapper is. | ||
it then delegates to the installer, which is in Perl 6. | 23:40 | ||
in other words, once Rakudo/Parrot are installed and proto finds them, you'll mostly be running Perl 6 when you execute proto.pl, even though that script is a Perl 5 script. :) | |||
mberends | backloggers, lurkers: is there a way to have a single .pl file containing both pure Perl 5 code and pure Perl 6 code, that runs only the appropriate code where started with either a Perl 5 or a Perl 6 implementation? Some tricks with eval, Pod, or obfu perhaps? Such a construct would be very useful for bootstrapping. And if it can't be done, what change to the Perl 6 language alone would make it possible? | 23:41 | |
lue | oooh, that's a good question. | 23:42 | |
masak | mberends: I've been toying with that thought at times. the solution would probably involve #`[] comments somehow, since Perl 6 has them and Perl 5 doesn't. | ||
my use case was Perl5/Perl6 tests. | |||
diakopter | std: package p6; | ||
p6eval | std 31225: OUTPUT«===SORRY!===Semicolon form of package definition indicates a Perl 5 module; unfortunately, STD doesn't know how to parse Perl 5 code yet at /tmp/dyPgVjuX2F line 1:------> package p6⏏; expecting any of: name traitParse | ||
..failedFAILED 00… | |||
mberends | lue: I thought of you when writing that question. A nice yak to shave. | ||
masak | lue: yes, please! write us a Perl script that runs in both Perl 5 and Perl 6! | 23:43 | |
lue | say "hi"; # there you go :) | ||
masak | bit of a trivial example, but technically... :) | 23:44 | |
thing is, more elaborate programs tend to contains loops and conditions and similar. | |||
lue | Aah! Is there an environment variable that tells you the Perl version, in both P6 and P5? | 23:45 | |
mberends | the trick is to make each implementation *not* see the source code that only the *other* one can handle. | ||
masak | hence, #`[] | ||
at least it hides Perl 5 code from Perl 6. | 23:46 | ||
the other direction is left as an exercise to the lurker. | |||
lue | masak: Oh! Now I see :) | 23:47 | |
5->6 that is. | |||
Hiding P6 from P5 is better left to someone who's actually learned P5, so not me. | 23:48 | ||
sorear | diakopter: "upon first stumbling upon them, a perlesque compiler can infer its type at that point" <-- This is precisely what I wanted. How could I have asked more directly? | ||
diakopter | oh :| sorry | ||
I don't know | 23:49 | ||
sorear | diakopter: also, did you just imply that perlesque itself should be handling contextuals? | ||
diakopter | it's 90% implemented | ||
I'd think they should translate fairly directly from STD's use of them | |||
but maybe not other Perl 6 code's use | 23:50 | ||
by "90% implemented" I mean "more tests need written (and verified, and bugs fixed if it fails the tests) | 23:51 | ||
" | |||
sorear | where is the list of valid perlesque types? | 23:52 | |
diakopter | any .net type, plus the classes declared in Sprixel | 23:53 | |
the primitives mapping is in ResolveType in Grammar.cs | |||
:) a bad place for it | |||
23:53
whitechap left
|
|||
diakopter | sorear: it appears contextuals are broken... I'll work on fixing them when I'm done fixing this other bug (that affects only mono) | 23:55 | |
23:57
yahooooo left
|