»ö« | 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 2␤3 4␤StopIteration␤ in main program body at line 11:/tmp/ApQ7UT0NzB␤»
szabgabx rakudo: for 1..5 -> $x, $y? { say $x; say $y }
p6eval rakudo 006bdf: OUTPUT«1␤Any()␤2␤Any()␤3␤Any()␤4␤Any()␤5␤Any()␤»
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 3␤2 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 namespace␤Method '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«1␤2␤3␤»
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«0␤1␤2␤»
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 escape␤Parse failed␤FAILED 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 umstritten␤liegst 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␤ trait␤Parse
..failed␤FAILED 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