Camelia, the Perl 6 bug

IRC log for #perl6, 2010-06-12

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:04 ciphertext joined #perl6
00:20 yinyin joined #perl6
00:21 Khisanth joined #perl6
00:27 whiteknight joined #perl6
00:28 davidm123 joined #perl6
00:31 masonkramer joined #perl6
00:33 davidm123 has use, require, and specifically "use lib" been changed in perl 6?  where might I find the official API on them?
00:37 jhuni joined #perl6
00:37 Tene davidm123: http://perlcabal.org/syn/S11.​html#Compile-time_Importation
00:45 snarkyboojum joined #perl6
00:46 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:47 davidm123 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
00:47 davidm123 Loader.pm that is
00:47 sorear but no compiler implements this yet
00:47 davidm123 oh.  lexical is what I was thinking it should be.
00:48 davidm123 is there is reference somewhere that says that is what it should be?
00:48 sorear probably not
00:48 dalek rakudo: e22e80f | (Solomon Foster)++ | src/core/ (2 files):
00:48 dalek rakudo: Tidy up Numeric and Real.
00:48 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/e​22e80f018f1ed4bd034497047c4c902eb51c5af
00:49 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
00:49 Tene "Importing via use binds into the current lexical scope by default (rather than the current package, as in Perl 5)."
00:50 Tene "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"
00:50 Tene "Importing via require also installs names into the current lexical scope by default, but delays the actual binding till runtime:"
00:50 sorear in principle, use lib 'foo' should be the same as constant @?INC ::= "foo", OUTER::<@?INC>;
00:51 davidm123 Tene, understood, but my concern was instead whether the search path (@INC) value is lexically scoped.
00:51 Tene ahh
00:51 Tene I misunderstood, sorry
00:51 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:54 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:55 sorear @*INC is the newly declared variable
00:55 sorear CALLER::<@*INC> is required to see the old value
00:56 sorear 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)
01:10 TiMBuS joined #perl6
01:40 Visitor99 joined #perl6
01:41 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:42 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.
01:43 Visitor99 ahh i guessed so.. i just wanted to be sure... thanks :)
01:43 Visitor99 this is the exampls:          my %moves = hands-over-head =¿ sub { $dance ∼=
01:43 Visitor99 ’/o\ ’ }
01:45 colomon yeah, that definitely looks like an error.
01:46 sorear TimToady: azawawi, who maintains the Padre/STD integration, has requested a pure Perl builder for STD.pmc.  Where do you stand?
01:52 TimToady there are many ways to improve on make, and probably even more ways to reinvent it poorly :)
01:53 lue .oO(curse you, tvtropes. curse you.)
01:54 agentzh joined #perl6
01:57 vapace_ joined #perl6
02:01 [particle] joined #perl6
02:06 szabgabx_ joined #perl6
02:06 eternaleye joined #perl6
02:16 vapace_ joined #perl6
02:32 dalek rakudo: 20a512b | (Solomon Foster)++ | src/core/ (2 files):
02:32 dalek rakudo: Tidy Int and Rat.
02:32 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/2​0a512bc25e59fb83d164c10abe0d432febd9c59
02:32 dalek rakudo: 006bdf0 | (Solomon Foster)++ | src/core/ (2 files):
02:32 dalek rakudo: Move Num operators from Real.pm to Num.pm.
02:32 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/0​06bdf0adc3e4e26951e481c498f9444c64789ce
02:35 vapace_ joined #perl6
02:36 dukeleto is there something like File::Spec for rakudo?
02:48 Bzek_ joined #perl6
02:58 jaldhar joined #perl6
03:04 envi^home joined #perl6
03:18 dukeleto msg pmichaud i made a new patch that does not require Test::Harness 3.x and uses run() from a Rakudo test : http://rt.perl.org/rt3/Tic​ket/Display.html?id=75650
03:18 vapace_ joined #perl6
03:24 yinyin joined #perl6
03:24 ash__ joined #perl6
03:27 Schwern joined #perl6
03:32 Chillance joined #perl6
03:39 [particle] joined #perl6
03:39 meppl joined #perl6
03:39 ingy joined #perl6
03:39 opx^away joined #perl6
03:39 Gothmog_ joined #perl6
03:39 tomaw joined #perl6
03:42 pnate joined #perl6
03:43 meppel joined #perl6
04:25 ciphertext joined #perl6
04:33 felipe joined #perl6
04:36 Visitor99 left #perl6
04:51 szabgabx_ rakudo: (1,2 X 4,7).perl
04:51 p6eval rakudo 006bdf:  ( no output )
04:52 szabgabx_ rakudo: say (1,2 X 4,7).perl
04:52 p6eval rakudo 006bdf: OUTPUT«(1, 4, 1, 7, 2, 4, 2, 7)␤»
04:52 szabgabx_ rakudo: my @x = 1, 2 X 4, 7; say @x.perl
04:52 p6eval rakudo 006bdf: OUTPUT«[(1, 4), (1, 7), (2, 4), (2, 7)]␤»
04:53 szabgabx_ I am not sure why the difference?
05:00 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 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␤»
05:00 szabgabx rakudo: for 1..5 -> $x, $y? { say $x; say $y }
05:00 p6eval rakudo 006bdf: OUTPUT«1␤Any()␤2␤Any()␤3␤Any()␤4␤Any()␤5␤Any()␤»
05:04 sorear szabgabx: handling of lists with nested parcels is known to be broken.  don't trust anything rakudo says
05:07 szabgabx I just ran the test of my slides
05:07 szabgabx and this failed
05:07 sorear joined #perl6
05:10 szabgabx rakudo: for 1,2 Z 3,4 -> $x, $y { say "$x $y" }
05:11 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" }
05:11 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, $"␤»
05:11 szabgabx rakudo: for 1,2 Z 3,4 Z 5,6 -> $x, $y, $z { say "$x $y $z" }
05:11 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␤»
05:21 sorear szabgabx: handling of lists with nested parcels is known to be broken.  don't trust anything rakudo says
05:31 szabgabx so its still the same bug :)
05:31 szabgabx I just found something that changed in the grammar engine
05:31 szabgabx I'll post it later
05:32 szabgabx to see if it was correct earlier or now
05:35 szabgabx 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:37 orafu joined #perl6
05:38 sorear autoviv doesn't work either
05:40 szabgabx that i not autoviv as I understand
05:40 szabgabx that code was written to avoid the need for autovivification
05:41 szabgabx but now even the work around is broken
05:42 szabgabx elems() is not exported any more?
05:42 sorear [0] is causing an autovivification, iirc
05:43 szabgabx rakudo: my %xml; %xml<people> = []; say %xml<people>;
05:43 p6eval rakudo 006bdf: OUTPUT«␤»
05:43 szabgabx rakudo: my %xml; %xml<people> = []; say %xml<people>.WHAT;
05:43 p6eval rakudo 006bdf: OUTPUT«Array()␤»
05:43 szabgabx rakudo: my %xml; %xml<people> = []; say %xml.perl;
05:44 p6eval rakudo 006bdf: OUTPUT«{"people" => []}␤»
05:45 szabgabx rakudo: "a,b,c".split(',').perl.say;
05:45 p6eval rakudo 006bdf: OUTPUT«("a", "b", "c")␤»
05:45 szabgabx this used to be ["a", "b", "c"]
05:53 sorear and...?
06:02 cognominal joined #perl6
06:02 cognominal hello from Calais.
06:04 sorear Hello to cognominal.
06:09 pugssvn r31198 | sorear++ | [STD-ecosystem] Introduce a new bootstrapping paradigm.  Most makefile targets not yet ported.
06:11 jnthn o/ from Kiev :-)
06:15 JimmyZ joined #perl6
06:19 * sorear hasn't moved at all since March...
06:20 sorear sometimes I feel weird for having a permanent residence
06:20 cognominal mberends says hello too
06:21 cognominal mberends did very well with jnthn slides.
06:23 jnthn mberends++ :-)
06:24 jnthn OK, /me -> venue
06:29 kensanata joined #perl6
06:31 eternaleye joined #perl6
06:37 kaare joined #perl6
06:45 jaldhar joined #perl6
06:46 pugssvn r31199 | sorear++ | [STD-eco] Add STD_P5 build capability (under 'all' but not default)
06:48 pugssvn r31200 | sorear++ | [STDeco] Add a clean target
06:49 jaldhar joined #perl6
06:51 pugssvn r31201 | sorear++ | [STDeco] Remove CORE.pad & boot, no longer used; add empty stage[12] dirs
07:06 alanhaggai joined #perl6
07:20 sorear yay, I have the three-stage STD bootstrap up to 16m12s
07:41 dalek rakudo: 8fc1ef5 | dukeleto++ |  (3 files):
07:41 dalek rakudo: Add test for loading perl6.pbc bytecode
07:41 dalek rakudo: Signed-off-by: Moritz Lenz <moritz@faui2k3.org>
07:41 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/8​fc1ef57fae03889c38a566dcc8daa4c0dda3250
07:46 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:57 pugssvn r31202 | sorear++ | [STD-eco] add stage3 and reboot targets
07:58 sorear all the new Makefile is missing at this point is snaptest
07:59 sorear and STD.pm5
08:00 cono joined #perl6
08:00 cono Hello every1 from yapc::russia :)
08:00 sorear Hello!
08:00 moritz_ \o/
08:00 cono jnthn: let's rock rakudo ;)
08:01 jnthn :-)
08:01 jnthn I just broked my Rakudo build. D'oh.
08:01 cono ;(
08:02 * sorear starts a test of snaptest (the irony) and ->sleep
08:02 sorear that'll be 16 min before it can even start testing
08:02 moritz_ if you want to rock rakudo, git pull, build the latest und run 'make stresstest'
08:02 moritz_ :-)
08:02 xabbu42 joined #perl6
08:02 moritz_ just pushed the new stresstest target
08:03 cono no way ;P
08:03 jnthn Oh, we have stresstest now? :-)
08:03 moritz_ 'twas a SMOP
08:03 cono make: *** No rule to make target `stresstest'.  Stop.
08:04 sorear stress?  that's like spec, but with -j512?
08:04 moritz_ cono: git pull, and reconfigure
08:04 cono you are fast ;)
08:04 moritz_ sorear: it's currently only t/spec/integration/advent2009-day17.t, which takes 5 minutes on my machine
08:04 dalek rakudo: a63c7e0 | moritz++ |  (4 files):
08:04 dalek rakudo: add stresstest target, and move day 17 of the advent tests to stresstest
08:04 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/a​63c7e050fef6a648af234ac551e6b0d04db9fe4
08:05 sorear mandel?
08:05 moritz_ right
08:05 jnthn yeah, think so
08:05 * sorear off for real
08:05 jnthn It took ages on my machine too
08:05 jnthn night sorear o//
08:05 jnthn oops, network lag doubles arms.
08:05 moritz_ need to talk to colomon if tanh.t should also be in stresstest
08:05 cono why can't do %*ENV.perl.say ?
08:06 cono I*
08:06 moritz_ rakudo: say %*ENV.perl
08:06 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␤»
08:06 jnthn rakudo: say %*ENV.perl
08:06 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␤»
08:06 jnthn ...ew.
08:06 moritz_ cono: seems it's not a proper Perl 6 hash, but a parrot hash :(
08:06 cono :(
08:06 jnthn moritz_: I thought it was a Parrot hash wrappd in a Perl 6 one...
08:07 moritz_ env = root_new ['parrot';'Env']
08:07 moritz_ $P2 = '&CREATE_HASH_LOW_LEVEL'(env)
08:07 moritz_ set_hll_global '%ENV', $P2
08:07 jnthn Yeah, that wraps it in a Perl 6 hash.
08:07 jnthn Maybe it leaks somehow.
08:07 moritz_ jnthn: any objections to renaming it to CREATE_HASH_FROM_LOW_LEVEL
08:07 moritz_ ?
08:08 moritz_ that sub name is mightily confusing
08:08 jnthn moritz_: Sure
08:08 jnthn moritz_: As in, no objections.
08:08 moritz_ :-)
08:10 moritz_ does parrt;Env inherit from Hash?
08:11 jnthn moritz_: mabye
08:12 jnthn moritz_: Can check
08:12 moritz_ C<Env> is a singleton class which provides access to the system environment.
08:12 moritz_ XXX Think about returning Pair back. Currently there is no way to iterate over
08:12 moritz_ environment I<keys>.
08:12 jnthn moritz_: ah, no, it doesn't.
08:12 szabgabx joined #perl6
08:12 jnthn OH
08:12 jnthn That's why it's busted.
08:12 szabgabx rakudo: say [*] 1..5;
08:12 jnthn grrrr
08:12 p6eval rakudo 006bdf: OUTPUT«120␤»
08:13 moritz_ rakudo: %*ENV.keys
08:13 p6eval rakudo 006bdf:  ( no output )
08:13 moritz_ rakudo: say %*ENV.keys
08:13 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␤»
08:13 jnthn say %*ENV.keys
08:13 szabgabx hmm, that did not work for me, let me check
08:14 szabgabx still does not work
08:14 szabgabx was reduction fixed in the last few days?
08:14 jnthn szabgabx: Don't think it's changed in quite a while.
08:14 moritz_ don't think so
08:15 szabgabx it tells me    Could not find sub &prefix:<[*]>
08:15 szabgabx with -e it worked
08:16 szabgabx oh, stupid me
08:16 szabgabx I probably redefined * by mistake
08:17 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
08:18 jnthn heh
08:18 Ross joined #perl6
08:19 jnthn cono: Want to hack on a little Rakduo task? :-)
08:19 cono jnthn: yup
08:22 dalek rakudo: 5ad963b | moritz++ | src/ (5 files):
08:22 dalek rakudo: s/CREATE_HASH_LOW_LEVEL/CR​EATE_HASH_FROM_LOW_LEVEL/
08:22 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/5​ad963bdc8d4116e86793c7e7c4db83830f13455
08:22 dalek rakudo: edf0072 | moritz++ | t/harness:
08:22 dalek rakudo: default to one test job at a time, due to complaints from avar++ and sorear++
08:22 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/e​df00722595864310f52ab1f4eb757aff323e09f
08:22 szabgabx http://nopaste.voric.com/paste.php?f=7srjom
08:24 szabgabx_ joined #perl6
08:25 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>␤»
08:25 moritz_ rakudo: our sub infix:<rrr>($a, $b) { $a + 2* $b }; [rrr] 1,1,1;
08:26 p6eval rakudo 006bdf:  ( no output )
08:26 moritz_ rakudo: our sub infix:<rrr>($a, $b) { $a + 2* $b }; say [rrr] 1,1,1;
08:26 p6eval rakudo 006bdf: OUTPUT«5␤»
08:26 szabgabx__ joined #perl6
08:26 moritz_ that's a bug/limitation in rakudo
08:26 szabgabx__ bad wireless
08:26 moritz_ but I don't understand why it affects [*]
08:28 szabgabx__ so if I understand I don't yet get the reduction operator for my own operators right?
08:28 szabgabx__ I am not sure which one of the commands i gave killed the [*]
08:28 szabgabx__ but was a bit surprising
08:29 moritz_ in theory you get them if you declare it as 'our sub infix...'
08:29 moritz_ ie put it in the symbol table
08:29 szabgabx__ oh, now I understand your example
08:29 szabgabx__ great
08:32 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 pugssvn ..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:37 moritz_ colomon: it was simply following a spec inconsistency
08:37 colomon moritz_: where?
08:37 moritz_ colomon: in the auld S32-setting-library/Numeric.pod
08:38 moritz_ probably (hopefully) gone
08:38 colomon wait, are you thinking of the "returns [...] undefined when the value passed is undefined"?
08:39 colomon that's still there.  (and also still an annoying inconsistency, IMO)
08:39 colomon this one is...
08:39 colomon rakudo: say 1i.sign
08:39 p6eval rakudo 006bdf:  ( no output )
08:39 colomon rakudo: say 1i.ceiling
08:39 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'
08:39 p6eval ..at li…
08:41 colomon rakudo: say Int.sign
08:41 p6eval rakudo 006bdf: OUTPUT«Mu()␤»
08:41 colomon rakudo: say Int.ceiling
08:41 p6eval rakudo 006bdf: OUTPUT«0␤»
08:41 colomon ack.
08:47 whitechap joined #perl6
08:52 colomon rakudo: say "dfgskgjks".sign
08:52 p6eval rakudo edf007: OUTPUT«0␤»
08:53 colomon okay, this needs more thought than I can give it at 4:53 AM
09:01 jnthn extreme morning, colomon o/
09:04 moritz_ \o/ I have a very prototype-ish Callframe.pm working
09:05 moritz_ it can return caller's line numbers and files
09:05 jnthn What was the pugscode commit bit url again?
09:05 moritz_ commitbit.pugscode.org
09:07 jnthn thanks
09:09 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
09:09 p6eval ..5004:C…
09:10 [mark] joined #perl6
09:10 szabgabx__ rakudo: our regex num { \d ** 1..3 }; say 10    ~~ m/ <num> /;
09:10 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 p6eval ..11:/tmp/0KCOUcnMXA␤»
09:10 szabgabx__ how is that written now?
09:11 radu__ joined #perl6
09:15 xabbu42 joined #perl6
09:15 xabbu42_ joined #perl6
09:16 moritz_ rakudo: my regex num { \d ** 1..3 }; say 10 ~~ / <&num> /;
09:16 p6eval rakudo edf007: OUTPUT«10␤»
09:16 moritz_ though it *should* work with <num> too
09:16 moritz_ only it doesn't
09:19 pugssvn r31204 | cono++ | * Rakudo now recognized \e. Turn on '\e' tests (RT#75244)
09:20 moritz_ cono++
09:24 JimmyZ_ joined #perl6
09:30 cono moritz_: ty :)
09:30 cono !karma cono
09:31 cono moritz_: We wanna make tests for TODO:S03 tests for cmp() and eqv() methods of objects, what objects should be tested?
09:38 jnthn @karma cono
09:38 jnthn buubot: karma cono
09:38 buubot jnthn: cono has karma of 2
09:38 jnthn cono++
09:38 jnthn :-)
09:38 cono :D
09:39 moritz_ cono: arrays, hashes, numbers for a start
09:39 jnthn moritz_: do we have those implemented?
09:39 jnthn (the function verions)??
09:39 jnthn *versions
09:39 jnthn rakudo: say cmp(1, 1)
09:39 p6eval rakudo edf007: OUTPUT«Could not find sub &cmp␤  in main program body at line 11:/tmp/Q5gYlPs6cc␤»
09:40 moritz_ jnthn: no
09:40 jnthn moritz_: Ah. What do they do, if you know?
09:40 jnthn Just delegate to &infix:<cmp>?
09:40 moritz_ compare stuff :/
09:40 jnthn meh
09:40 moritz_ jnthn: I guess it's the other way round
09:40 jnthn Oh.
09:40 moritz_ but I'm not sure
09:40 jnthn Yeah, makes some sense.
09:40 jnthn Hmm
09:40 jnthn Me either. :-)
09:41 jnthn 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 :-)
09:43 dalek rakudo: aecd470 | moritz++ |  (2 files):
09:43 dalek rakudo: early, hacky implementation of callframe($level) and class CallFrame
09:43 dalek rakudo: Currently it only supports things like these:
09:43 dalek rakudo: callframe().line  # the current line
09:43 dalek rakudo: callframe(1).line # caller's line
09:43 dalek rakudo: callframe(1).file # caller's file
09:43 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/a​ecd47061298d5967201fe9bcc008db4026354dc
09:44 jnthn oh wow
09:44 jnthn moritz_++
09:45 moritz_ it was actually quite simple
09:48 jnthn :-)
09:48 dalek rakudo: 6fe0817 | (Vyacheslav Matjukhin)++ | src/core/Any-list.pm:
09:48 dalek rakudo: #RT75626 - [TODO] Implement Any.all (and .any, .one, .none) in Rakudo
09:48 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/6​fe08170cf519da533f3434f1ec0121ec68f3336
09:49 moritz_ I started it because I noticed I was going to re-invent it in PIR all over the compiler
09:49 jnthn *nod*
09:49 moritz_ next: buying some fruits for the weekend; then, if my luck holds, CallFrame.my
09:49 moritz_ TimToady: what type does callframe().my return?
09:50 pugssvn r31205 | mmcleric++ | RT#75626 tests - Implement Any.all (and .any, .one, .none) in Rakudo
09:51 pugssvn r31206 | jnthn++ | [t/spec] Unfudge two more attribute introspection tests that Rakudo can now pass.
09:51 ciphertext joined #perl6
09:54 dalek rakudo: 46e9ac2 | jonathan++ | src/ (3 files):
09:54 dalek rakudo: Start to store attribute type constraints so we can introspect them.
09:54 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/4​6e9ac2d8b8fb54c47cb668388918ba1f92f7b89
09:56 mberends joined #perl6
09:56 mberends \o/ from Calais! (change FreeNode port from 8001 to 6667)
09:59 mberends there is a possibility that Dancer may come to Perl 6 (http://perldancer.org)
10:03 mberends 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:04 jnthn :-D
10:04 jnthn HackMeet is going nicely here too. :-)
10:06 cono yeah :)
10:06 jnthn Even though I was drinking wasabi vodka last night.
10:06 cono D:
10:06 jnthn ukraine++
10:07 Su-Shee joined #perl6
10:25 moritz_ rakudo: my $p = pir::getinterp__p; say $p
10:25 p6eval rakudo edf007:  ( no output )
10:26 jnthn moritz_: probably it needs ()
10:28 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
10:28 p6eval rakudo edf007:  ( no output )
10:28 p6eval 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
10:28 p6eval ..938:CORE.setting␤  in…
10:28 jnthn rakudo: my $p = pir::getinterp__p(); say PARROT($p)
10:28 p6eval rakudo edf007: OUTPUT«Perl6Scalar->ParrotInterpreter␤»
10:29 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 #perl6
10:29 JimmyZ the first code in Chapter 7
10:29 moritz_ jnthn: probably
10:30 moritz_ which one is chapter 7?
10:30 JimmyZ Chapter 7 Pattern matching
10:32 radu__ hey everyone
10:33 radu__ if i add a test that is currently failing, should i fudge it?
10:33 radu__ or should I leave it as is?
10:36 clintongormley joined #perl6
10:36 moritz_ radu__: depends on why it fails
10:37 moritz_ radu__: if it fails because it's a new test for a feature that's not yet implemented, fudge it
10:37 moritz_ 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
10:37 JimmyZ moritz_: http://paste.lisp.org/display/111371
10:37 whiteknight joined #perl6
10:41 radu__ ok, i added a test for RT 63588, which verifies if global variables can be accessed inside class declarations
10:41 radu__ so i suppose i should fudge it, since this is not implemented yet
10:42 moritz_ right
10:42 sorear joined #perl6
10:42 moritz_ JimmyZ: ah yes, known problem in rakudo and the book :(
10:43 JimmyZ oh, okey, it's found by a user, not me
10:45 moritz_ it needs to be 'my regex ...'
10:45 JimmyZ yes, but still wrong
10:45 moritz_ and then rakudo needs to learn to pick up names of lexical scopes
10:45 moritz_ in the <foo> form
10:52 pugssvn r31207 | mmcleric++ | RT #75526 tests
11:07 moritz_ rakudo: class A { has $.x handles elems }; say A.new(x => []).elems
11:07 p6eval rakudo 46e9ac: OUTPUT«1␤»
11:07 moritz_ rakudo: class A { has $.x handles elems }; say A.new(x => [3]).elems
11:07 p6eval rakudo 46e9ac: OUTPUT«1␤»
11:07 moritz_ rakudo: class A { has $.x handles elems }; say A.new(x => [3, 4]).elems
11:07 p6eval rakudo 46e9ac: OUTPUT«1␤»
11:08 moritz_ rakudo: class A { has $.x handles 'elems' }; say A.new(x => [3, 4]).elems
11:08 p6eval rakudo 46e9ac: OUTPUT«1␤»
11:08 moritz_ rakudo: class A { has $.x handles 'sqrt' }; say A.new(x => 25).sqrt
11:08 p6eval rakudo 46e9ac: OUTPUT«Method 'sqrt' not found for invocant of class 'A'␤  in main program body at line 11:/tmp/dKNSk_Hdh6␤»
11:09 jnthn moritz_: elems nyi - I may get to it today though
11:09 jnthn (but clearing some other attributes related things up first)
11:09 moritz_ did you mean "handles nyi"?
11:10 jnthn moritz_: oops, yes :-)
11:11 Ross joined #perl6
11:13 moritz_ jnthn: is berekuk++ in the same room with you?
11:17 pugssvn r31208 | radus++ | [t/spec]: Added test for RT 63588 global my variables are not visible inside class declarations.
11:18 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:20 colomon 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 colomon thoughts?
11:21 moritz_ when I want to define a class X does Real { ... }
11:21 moritz_ it also does Numeric
11:22 colomon that's the theory.
11:22 moritz_ will it get composition clashes from the Real methdo and the Numeric method stub?
11:22 colomon I don't think so.
11:22 colomon I'm already doing that for things like .abs
11:22 moritz_ then I'm all for it
11:23 moritz_ http://onperl.ru/onperl/2010/06/xa​kmit-na-perl-mova-yapcrussia.html looks like a nice hackathon
11:24 masak joined #perl6
11:25 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?
11:25 masak yes, I was too quick to refudge there.
11:25 masak thinking whether to roll back that commit and keep the branch for the day, or maybme merge immediately instead.
11:26 moritz_ masak: no need for big hurry; just wanted to make sure you're aware that fudging affects master too :-)
11:26 masak heh ;)
11:26 dalek rakudo: 92b1f42 | (Vyacheslav Matjukhin)++ | src/core/RangeIter.pm:
11:26 dalek rakudo: RangeIter works with values which are idempotent to .succ (closes RT#75526)
11:26 dalek rakudo: Signed-off-by: Moritz Lenz <moritz@faui2k3.org>
11:26 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/9​2b1f42333fa022b58159c9b2ac71648dff76b02
11:27 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, http://rt.perl.org/rt3/Tic​ket/Display.html?id=75674 might be one
11:28 moritz_ (that's also a hint to the hackathoners, if anybody's reading #perl6 :-)
11:29 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 colomon (though I don't know if it will affect that particular code much)
11:29 moritz_ I hope it doesn't
11:29 masak I thought I'd commence the first iteration of pls today.
11:30 colomon \o/
11:30 colomon do we have tests for #75526?
11:31 moritz_ I think one was just added a few minutes ago
11:31 moritz_ RT #75526 tests
11:31 moritz_
11:31 moritz_ git-svn-id: http://svn.pugscode.org/pugs@31207
11:31 colomon groovy
11:32 moritz_ those people rock.
11:35 pugssvn r31209 | moritz++ | [t/spec] unfudge tests for RT #75526
11:42 cono rakudo: my $c = { :$^q }; $c(5).perl.say
11:42 p6eval rakudo 46e9ac: OUTPUT«===SORRY!===␤Symbol '$^q' not predeclared in <anonymous>␤»
11:43 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 = { "␤»
11:43 cono rakudo: my $c = { my $a = $^q; :$a }; $c(5).perl.say
11:43 p6eval rakudo 46e9ac: OUTPUT«"a" => 5␤»
11:44 cono is it right? :$^q ?
11:45 moritz_ std: { :$^q }
11:45 cono due to spectest's TODO: * test colonpair shortcuts involving twigils: :$!a, :$.a, :$^a
11:45 p6eval std 31197: OUTPUT«ok 00:01 107m␤»
11:45 moritz_ cono: yes, should work that way
11:45 moritz_ ie { $^q }.(5) should return q => 5
11:45 moritz_ erm
11:45 moritz_ ie { :$^q }.(5) should return q => 5
11:45 moritz_ forgot that colon
11:46 cono it's not implemented for now ?
11:47 cono does it need test for unimplemented feature?
11:54 pugssvn r31210 | dimid++ | add tests for lines($fh, $limit) and lines($filename[, $limit])
12:01 jnthn moritz_: (berekuk++) yes, sat right next to me even :-)
12:02 masak jnthn! \o/
12:03 jnthn masak!
12:03 masak jnthn: where are you right now?
12:04 jnthn Right now I am at a hackmeet in Kiev.
12:04 masak how's the weather in Kiev?
12:05 jnthn ETOOHOT
12:05 jnthn But thankfully this place has air conditioning.
12:05 masak we have overcast here, with a chance of rain.
12:05 jnthn At least the temperature is probably sensible. :-)
12:07 jnthn Kiev is very pretty in the sun though :-)
12:08 masak temperature's a bit wonky. could be a thunderstorm is coming.
12:08 colomon > say 1i.sign
12:08 colomon sign is only defined for Reals, you have a Complex()
12:08 masak colomon: \o/
12:08 jnthn "you have a complex" <snicker>
12:08 colomon :)
12:09 colomon and that Complex is $.WHAT(), so it will report appropriately for any Numeric type.
12:09 colomon spectesting now.
12:09 masak it's the Mandelbrot complex, the one where you're always asking for the sign of your imaginary friends.
12:10 masak could be worse. could be a hypercomplex.
12:10 radu__ joined #perl6
12:10 Su-Shee now try that explaining to your shrink. ;)
12:11 masak "Ever since childhood I've believed that multiplication was commutative..."
12:11 moritz_ and then you learned about those damn matrices
12:11 moritz_ and derivative operators
12:12 masak those are easier to write off as "not actual numbers" than quaternions :)
12:12 moritz_ rakudo: say callframe().line
12:12 p6eval rakudo 46e9ac: OUTPUT«11␤»
12:12 moritz_ rakudo: say callframe().file
12:12 p6eval rakudo 46e9ac: OUTPUT«/tmp/ddUbjKGDgd␤»
12:14 pugssvn r31211 | radus++ | [t/spec]: Added test for RT 65224 class name as string unexpectedly works
12:16 cono How can I produce warn message from src/Perl6/Actions.pm ?
12:17 meppl joined #perl6
12:18 moritz_ cono: you write to standard error with pir::printerr__vS($string)
12:18 cono moritz_: thanks
12:19 moritz_ don't know if that's the best way, but it works
12:19 mberends joined #perl6
12:19 jnthn cono: What are you hacking on at the moment?
12:19 masak mberends! \o/
12:20 cono Trying to get a point in method colonpair($/) {
12:20 mberends \\o//
12:20 jnthn ah, I think Vyacheslav is also looking at that at the moment.
12:20 cono I guess we have not access to local $^q in make_variable($/, ~$<var>) :)
12:21 masak mberends: I'm writing pls core tests.
12:21 cono I'm just a newbie one, playing :)
12:21 masak cono: we all are :)
12:22 masak 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 :)
12:22 cono masak: :D
12:22 mberends masak++ # another plus for masak
12:23 jnthn cono: :-)
12:23 * jnthn wonders what the $*q thingy is
12:24 jnthn cono: Oh, I mis-read.
12:24 moritz_ :$*q should also work :-)
12:25 masak mberends: I have many small questions about the new data model. are you available enough to discuss them?
12:26 mberends masak: yes, and very interested :)
12:26 masak ok. let's build up the current data model from first principles.
12:26 masak there's a subcommand 'fetch'.
12:26 isBEKaml joined #perl6
12:26 masak that already implies that there are two project states: 'not fetched' and 'fetched'.
12:27 masak is there a better name for 'not fetched'? :)
12:27 mberends Debian doesn't. They call it 'purged' :-/
12:27 masak 'purged' meaning 'not fetched'?
12:28 mberends yup
12:28 moritz_ purged means "not installed, and config files removed" iirc
12:28 masak I like it, except it sounds too grave.
12:28 masak maybe something punnier would work.
12:28 mberends because if you do purge software, you have nothing left
12:28 masak also, what's the state of a project that does not exist?
12:29 masak 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]
12:29 isBEKaml EBRUSHEDUNDERCARPET
12:29 masak mberends: what about 'gone' for 'not fetched'?
12:30 isBEKaml masak: mine above? ^^
12:31 masak isBEKaml: it's... a bit long...
12:31 masak 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:32 masak mberends: can you fetch an already built project? can you fetch an already installed project?
12:33 masak oh noes, I DDoS-ed mberends! :(
12:34 isBEKaml :)
12:34 isBEKaml masak: I find that trying out things on Yapsi takes up some startup time.. :(
12:35 masak isBEKaml: have you compiled?
12:35 isBEKaml masak: yes.
12:35 masak compiled Yapsi, I mean.
12:35 masak that reduces startup time somewhat.
12:35 masak after that, startup is 3-5 seconds on my box.
12:36 isBEKaml ack, I didn't see that Makefile. I went straight into yapsi and Yapsi.pm
12:37 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... :/
12:37 masak isBEKaml: what's your Github accound name?
12:38 masak 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
12:38 masak s/accound/account/
12:38 isBEKaml svatsan
12:38 masak oh, right.
12:38 masak hugme: add svatsan to yapsi
12:38 * hugme hugs svatsan. Welcome to yapsi!
12:38 isBEKaml proto. :)
12:40 mberends joined #perl6
12:41 isBEKaml do I need to add Yapsi.pm to ~/.perl6/lib?
12:41 masak either that, or modify your PERL6LIB.
12:42 mberends ETOOMANYQUESTIONSANDTOOWOBBLYWIFI
12:42 isBEKaml yes, added to ~/.perl6/lib. This still takes up some time. approx 10 secs
12:42 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.
12:43 masak isBEKaml: oh wait. Yapsi.pm doesn't speed up things. it's the Yapsi.pir which does.
12:45 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. ;)
12:45 masak mberends: hm, agreed.
12:46 masak isBEKaml: do you have a Yapsi.pir?
12:46 isBEKaml masak: yes. I see that in lib folder.
12:46 masak isBEKaml: is it either in ~/.perl6/lib or in a PERL6LIB path?
12:46 masak that's when you get the speed.
12:47 masak well, um, 'speed'.
12:49 masak 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. :)
12:49 masak 'TIL'?
12:50 isBEKaml Today I Learned
12:50 masak ah. nice abbreviation. :)
12:50 masak or acronym. whatever.
12:50 isBEKaml blatantly took off reddit lingo... ;)
12:50 jnthn TLA Is LTA
12:51 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>
12:51 masak isBEKaml: feel free to use your new Yapsi privs to add your new-found knwoledge to the README. :)
12:51 jnthn rakudo: "abc" ~~ /$<foo>=(<alpha>)/; say $<alpha>;
12:51 p6eval rakudo 92b1f4: OUTPUT«␤»
12:51 masak mberends: right. what's the rationale for having 'tested' in there, and on by default?
12:51 jnthn rakudo: "abc" ~~ /$<foo>=(<alpha>)/; say $0<alpha>;
12:51 p6eval rakudo 92b1f4: OUTPUT«Method 'postcircumfix:<{ }>' not found for invocant of class 'Proxy'␤  in main program body at line 1␤»
12:52 jnthn rakudo: "abc" ~~ /$<foo>=(<alpha>)/; say $/
12:52 p6eval rakudo 92b1f4: OUTPUT«a␤»
12:52 jnthn Regex engine bug?
12:52 mberends masak: let me tell you about testing some time. It rocks! ;)
12:52 jnthn (we lose the $<alpha>
12:52 jnthn )
12:52 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'.
12:53 masak mberends: agreed, but this *will* cause most projects to fail to install on people's computers.
12:54 mberends masak: most projects can get a little fake passing test to get with the program
12:54 masak er.
12:54 masak the problem is not that they don't have tests.
12:54 masak that vacuously counts as 'all tests pass'.
12:54 masak the problem is that most projects out there have failing tests.
12:55 masak 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
12:56 masak ok, just checking.
12:56 masak how does the failure mode look.
12:56 masak s/\./?/
12:56 masak what does a user see when the tests fail? what options are available?
12:56 masak discuss.
12:56 * masak bikes to fetch sushi &
12:58 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.
12:59 mberends moritz_: +1 # kinda like a --force install mode
13:03 mberends ( it's also cute to hear Parrot pronounced like Monsieur Poirot :)
13:03 jnthn rakudo: say ^5;
13:03 p6eval rakudo 92b1f4: OUTPUT«01234␤»
13:03 jnthn rakudo: say (^5).WHAT;
13:03 p6eval rakudo 92b1f4: OUTPUT«Range()␤»
13:09 isBEKaml rakudo: ^5.say
13:09 p6eval rakudo 92b1f4: OUTPUT«5␤»
13:09 isBEKaml wutt? :O
13:11 isBEKaml rakudo: (^5).say
13:11 p6eval rakudo 92b1f4: OUTPUT«01234␤»
13:12 isBEKaml Ah, I seeee... treat it like a list...
13:13 jnthn isBEKaml: you did ^(5.say) first time round :-)
13:14 isBEKaml jnthn: yes, prefixed ops kinda confuse me. :(
13:15 takadonet joined #perl6
13:16 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:17 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.
13:17 masak pls fetches, builds and installs all dependencies.
13:18 isBEKaml masak: install them even if one fails, inspite of a lot of dependencies for what I need.
13:18 mberends joined #perl6
13:18 masak isBEKaml: hm. interesting.
13:19 masak isBEKaml: problem is, how do you run 'make install' on something for which 'make' likely fails?
13:19 snarkyboojum joined #perl6
13:20 colomon huh.  how did we lose 100+ tests from earlier this week?
13:20 masak snarkyboojum! \o/
13:21 moritz_ colomon: we did?
13:21 masak mberends: can an install step fail? what state is the project in after that?
13:21 snarkyboojum hi masak! o/
13:21 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.
13:21 colomon my last spectest run shows 33,274 passing, 39,887 total
13:21 colomon earlier it was 33,3xx passing and 40,000+ total
13:21 isBEKaml yo, snarkyboojum !
13:22 snarkyboojum isBEKaml: o/ :)
13:22 masak isBEKaml: ok, point taken. I think we have to allow for that, yes.
13:22 isBEKaml masak: in effect, I'm saying --force would just install A. That's what I want after all.
13:22 moritz_ colomon: I removed one file from t/spectest.data, and put it in t/stresstest.data
13:22 moritz_ colomon: but that should account for ~40 tests, not > 100
13:23 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 masak this works because both (1) and (2) are preconditions for installation, and both can be ignored.
13:23 dalek rakudo: 0d0672b | (Solomon Foster)++ | src/core/Numeric.pm:
13:23 dalek rakudo: Add stubs with fail for the Real-only methods, so that using them incorrectly
13:23 dalek rakudo: gives you a decent error message rather than an infinite recursion.
13:23 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/0​d0672bd0a1dbb439148be2ac3de819b4d14ace6
13:23 dalek rakudo: b502e87 | (Solomon Foster)++ | src/core/Complex.pm:
13:23 dalek rakudo: Tweak Complex a bit, including requiring Real values be passed to new, moving
13:23 dalek rakudo: sqrt, roots, and prefix:<->, and deleting sub log(Complex), sub sign(Complex),
13:23 dalek rakudo: and Complex.sign.
13:23 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/b​502e87d32f8985faf1acf44087f10a7d539fa47
13:24 isBEKaml masak: right.
13:24 masak does an install --force, where the --force turned out to be unnecessary, succeed or fail?
13:24 moritz_ succeed
13:24 isBEKaml succeed.
13:25 masak good. :)
13:25 isBEKaml I don't think the unnecessary check is needed here.
13:25 moritz_ "I force you to, but please don't do it if no force is necessary" doens't really sound very consequent :-)
13:25 jnthn That's just mean. :-)
13:25 isBEKaml moritz_: I think you mean convincing. :)
13:25 jnthn Certainly succeed. :-)
13:26 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 JimmyZ joined #perl6
13:26 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.
13:26 masak in some sense, it's already a social failure more that author sloppiness only punishes consumers. :/
13:27 masak isBEKaml: again, that's not the problem.
13:27 masak isBEKaml: no tests imply all tests succeeded.
13:27 takadonet rakudo: role work { method x {say 'hello'}}; class me does work {}; me.new.x();
13:27 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␤»
13:27 takadonet still not fixed :(
13:28 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.
13:28 isBEKaml masak: Again, that's what that guy said. :)
13:29 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:30 masak 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 masak which is, essentially, what refusing to install after a failed test run means.
13:31 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 isBEKaml s/necessary/necessarily/
13:31 masak isBEKaml: proto does not enforce anything. by design. neither will pls.
13:32 masak not only because I don't believe it'll work, but also because I believe it sends the wrong signals.
13:32 masak a project can have perfectly legitimate reasons not to have a t/ directory.
13:33 isBEKaml masak: well, if that's by design, we can go without enforcing the checks and leave it to user discretion.
13:34 masak isBEKaml: http://use.perl.org/~masak/journal/38876
13:34 masak isBEKaml: the second guiding principle there, "don't assume", really extends to the project author as well.
13:35 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:36 JimmyZ joined #perl6
13:37 masak there are *guidelines* here: http://github.com/masak/proto/blob/master/PIONEER
13:37 masak but note that they start with "If you have a Perl 6 project, it already conforms to the requirements posed by proto."
13:38 moritz_ .oO( spelling stuff correctly helps. Like not method postcircimifx:<{ }>( ) )
13:39 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 masak isBEKaml: but that's opt-in, and that makes the whole difference.
13:40 masak s/the whole/all the/
13:41 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".
13:42 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?"
13:42 masak jnthn: :P :P :P
13:42 jnthn masak: Couldn't resist. :-)
13:42 masak jnthn: perfect grammar, too! you rock!
13:42 isBEKaml jnthn: ?
13:42 masak isBEKaml: it's a long story :P
13:42 isBEKaml :D
13:43 masak isBEKaml: there's this "Swedish" song, which is really Czech...
13:43 mberends joined #perl6
13:43 masak ...whose title is "Min man e kass", meaning "My husband isn't very good".
13:43 masak isBEKaml: jnthn++'s comment was a riff on that.
13:44 masak he said "My drink is kvass.", which sounds kinda similar to "Min man e kass".
13:44 masak EOLONGSTORY
13:44 isBEKaml :D ## I'm learning Swedish too!
13:44 masak mberends: the OO structure of all this is becoming clearer.
13:45 masak mberends: there will be App::Pls::Core in the middle, controlling everything.
13:45 masak mberends: then there will be Fetcher, Builder, Installer and Uninstaller objects doing the actual work.
13:46 masak there can be different Fetcher classes for github, gitorious, and rakudo/parrot/proto.
13:46 masak maybe there'll be separate Builder and Installer classes depending on OS, but it'd of course be better to make them cross-platform.
13:47 masak 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:48 masak mberends: only the latter can reasonably be uninstalled. and even then, there's the problem of "refcounting".
13:50 masak 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.
13:51 isBEKaml masak: how does proto/pls deal with versioning?
13:52 masak isBEKaml: an extremely good question.
13:52 isBEKaml masak: do you have any naming conventions in naming modules?
13:52 masak isBEKaml: no.
13:52 isBEKaml like module A-version-date.pm or something?
13:52 masak isBEKaml: oh, sure.
13:52 masak see S13, I think.
13:53 masak no, S11.
13:53 jnthn S11
13:53 masak and prepare to have your mind blown. ;)
13:54 jnthn I just played with the meta-model some, mine is already blown for today. :-)
13:54 moritz_ you met a mind-blowing model?
13:54 moritz_ :-)
13:54 masak jnthn: you sure it wasn't the Wasabi vodka, then? :P
13:56 jnthn moritz_: Well... :-)
13:56 jnthn masak: I had one of the best nights sleep I've had recently after that. :-)
13:56 isBEKaml masak: one small change in yapsi too. instead of the shebang pointing to /usr/bin/alpha, i've used /usr/bin/env alpha
13:57 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 )
13:57 masak isBEKaml: that's fine by me.
13:57 masak Windows doesn't care for shebang lines.
13:57 jnthn masak: How could that not be a sleep win? :-)
13:58 masak :)
13:58 mberends joined #perl6
13:59 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. :)
14:00 masak mberends: a couple of questions for you in the backlog.
14:01 masak anyway, picking up the thread on alternatives to 'install --force'.
14:01 masak the first alternative was an interactive prompt.
14:01 masak I don't really like interactive prompts.
14:01 moritz_ there could be a preference
14:01 moritz_ "force by default" vs "fail by default"
14:01 masak yes, but that's just punting the problem.
14:01 masak the key here is a good deafult.
14:01 moritz_ aye
14:02 masak and I'd like to write as little code as I can get away with. :)
14:02 masak so I plan to kill dead most of the preferences proto has.
14:05 jnthn .oO( mberends network keeps going on strike ;-) )
14:05 dalek yapsi: b74b719 | Shrivatsan++ |  (2 files):
14:05 dalek yapsi: Add more info about building yapsi and make the
14:05 dalek yapsi: yapsi executable shebang more generic.
14:05 dalek yapsi: review: http://github.com/masak/yapsi/commit/b7​4b719fefe926cd7c2c81774436a4743d43385d
14:06 mberends joined #perl6
14:06 pugssvn r31212 | mmcleric++ | test colonpair shortcuts involving twigils
14:06 masak isBEKaml++
14:07 masak isBEKaml: no worries this time, but can I ask you to leave the second line blank in git commit messages?
14:07 masak isBEKaml: it makes all manner of tools work better when showing the messages.
14:07 masak http://tbaggery.com/2008/04/19/a-n​ote-about-git-commit-messages.html
14:07 whitechap How can I check if XML modules are installed in Perl on Linux?
14:07 masak whitechap: let me guess; Perl 5?
14:08 whitechap masak, Yes
14:08 masak whitechap: I kindly refer you to #perl on irc.perl.org.
14:08 masak this is #perl6.
14:08 whitechap How different are 5 and 6?
14:08 masak whitechap: in this case, different enough. :)
14:08 cono :)
14:09 masak in general, very different in syntax, but the feeling is still very much Perl.
14:09 isBEKaml masak: ok, next time. :)
14:09 pugssvn r31213 | dimid++ | fix: skip block while lines($filename, $limit) isn't implemented yet
14:09 masak whitechap: of course, that depends who you ask.
14:09 masak whitechap: ask a Perl 5 person, and they will probably staunchly say that Perl 6 is a whole 'nother language.
14:09 masak ...which is a defendable position, but not the whole story, if you ask me.
14:11 whitechap masak, Thnx
14:11 masak whitechap: good luck on #perl!
14:11 jnthn rakudo: say 'a'...'z'
14:11 p6eval rakudo 92b1f4:
14:11 p6eval ..OUTPUT«abcdefghijklmnopqrstuvwxyzaaabacadaeafag​ahaiajakalamanaoapaqarasatauavawaxayazbabbbcbdbeb​fbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzcacbcccd​cecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczdadbd​cdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzea​ebecedeeefegeheiejekelemeneoepeqereseteuevewex…
14:11 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 #perl6
14:12 agentzh joined #perl6
14:12 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:13 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 masak vim++
14:14 dju joined #perl6
14:15 masak mberends: if I have a project with state 'install', and I do 'fetch' on it, what state will it have afterwards?
14:15 masak s/install/installed/
14:15 isBEKaml masak: ah, I see..
14:18 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:19 szabgabx joined #perl6
14:19 masak should there be a `pls install --skip-tests project` option?
14:19 masak (the difference to '--force' being that the tests aren't even run)
14:20 jnthn --no-matter-what
14:20 takadonet do we have lazy list working yet with gather and take?
14:23 masak takadonet: no.
14:23 rv2733 joined #perl6
14:24 takadonet masak: oh :(
14:24 masak takadonet: but pmichaud is woking in that area.
14:24 takadonet masak: sweet.
14:26 moritz_ well, gather/take *is* lazy
14:26 takadonet finally variable interpolation in comb!
14:26 takadonet my $sequence = $seq.seq().comb( /. ** {1..$!width}/).join("\n");
14:26 takadonet thanks whoever did that patch :)
14:28 moritz_ I have a patch for callframe().my
14:28 moritz_ but... it doesn't work :(
14:29 moritz_ it returns Mu for every variable
14:29 moritz_ (or rather the Null PMC, which I then turn into Mu before anything bad happepns
14:30 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«()␤»
14:30 jnthn moritz_: I can peek at it if you like.
14:31 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?
14:32 moritz_ jnthn: http://nopaste.snit.ch/21206
14:32 moritz_ my $x = 5; callframe().my # returns a LexPad
14:33 moritz_ but callframe.my.<$x> # returns Mu
14:33 sdeseille joined #perl6
14:33 sdeseille Hello
14:33 masak hi.
14:34 moritz_ (removing the 'is Associative' doesn't change anything)
14:35 jnthn masak: maybe try coercing key to a string register
14:35 moritz_ tried that too
14:35 jnthn masak: er, try telling moritz that
14:35 jnthn :-)
14:35 masak moritz_: maybe try coercing key to a string register
14:35 jnthn Oh. :-|
14:36 moritz_ according to the docs, they should be the same. And according to my experiments, both return a Null PMC
14:36 moritz_ my next step is to iterate the PMC
14:36 moritz_ and see what falls out
14:36 moritz_ maybe it's empty, by some magic
14:36 pugssvn r31214 | dimid++ | fixing the last commit
14:37 jnthn moritz_: Yeah, it looks like it should work off hand.
14:38 pmichaud good morning, #perl6
14:38 moritz_ good morning pmichaud
14:38 * pmichaud looks forward to finishing lists/iterators today
14:38 sdeseille I try to compile rakudo on my fresh debian squeeze and i Have an error message. Is anyone can help me ?
14:38 moritz_ sdeseille: if you show us the error message, we can try
14:39 sdeseille the message is : http://pastebin.ca/1881700
14:39 moritz_ so that's during the parrot build
14:39 jnthn morning from the Kiev Hackmeat, pmichaud
14:39 jnthn er, Hackmeet
14:39 jnthn :-)
14:39 pugssvn r31215 | jnthn++ | [t/spec] Unfudge all S12-introspection/attribute.t, since Rakudo can now the whole file.
14:40 moritz_ sdeseille: is this a fresh checkout of rakudo and parrot?
14:40 Visitor99 joined #perl6
14:40 sdeseille yes
14:40 jnthn moritz_: one more thing
14:41 jnthn $P1 = getattribute $P0, '$!parrot_lexpad'
14:41 jnthn moritz_: after that line try
14:41 jnthn $P1 = descalarref $P1
14:41 moritz_ ah
14:41 dalek rakudo: 5c78c71 | jonathan++ | src/Perl6/Compiler/Package.pm:
14:41 dalek rakudo: Set an attribute type to Any if there's no supplied type constraint.
14:41 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/5​c78c71ec36130ed25c4cc6068904105517cb963
14:41 dalek rakudo: 52873b9 | jonathan++ |  (3 files):
14:41 dalek rakudo: A little tweak so we can augment P6metaclass classes in the setting as well as
14:41 dalek rakudo: ClassHOW ones. Use this to augment Attribute to add has-accessor.
14:41 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/5​2873b9b20a549549290a4bc3ee930d5c9bb03c6
14:41 dalek rakudo: 8731a52 | jonathan++ | src/metamodel/Attribute.nqp:
14:41 dalek rakudo: Attribute.build should not return a Parrot Undef; it explodes leakily in Perl 6.
14:41 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/8​731a52c5adc7c6efa41b90e97d0a06b7c26c4a2
14:43 pmichaud jnthn: (5c78c71)  Is that correct?!
14:43 pmichaud meaning, I'm not able to do    $!myattr = any(2,3);  ?
14:43 moritz_ why shouldn't it be?
14:43 moritz_ rakudo: my $x; say $x.WHAT
14:43 p6eval rakudo 92b1f4: OUTPUT«Any()␤»
14:44 moritz_ it's the same with ordinary variables too
14:44 pmichaud rakudo:  my $x = any(2,3);
14:44 p6eval rakudo 92b1f4:  ( no output )
14:44 pmichaud rakudo:  my $x = any(2,3);  say $x;
14:44 p6eval rakudo 92b1f4: OUTPUT«any(2, 3)␤»
14:44 moritz_ huh.
14:44 pmichaud there's a difference between initial value and type constraint.
14:44 pmichaud (or there can be)
14:44 moritz_ that is kinda unexpected to me
14:44 masak to me too.
14:44 pmichaud you're expecting assigning a junction to a variable to fail?
14:45 masak I thought the spec said ordinary variables (and attributes) are typed Any by default.
14:45 * pmichaud checks the spec
14:46 jnthn pmichaud: There was a spec change towards Any I'm sure
14:47 jnthn pmichaud: I don't exactly like it either. ;-)
14:47 sdeseille what can i do to help you for help me ?
14:47 pmichaud jnthn: I know that we speced that untyped containers would default to Any as the protoobject.
14:47 pmichaud I don't recall that we said it would be a type constraint (because of the junction issue mentioned above)
14:47 jnthn pmichaud: OK, I'll Mu it. :-)
14:47 jnthn pmichaud: And update the test.
14:47 moritz_ sdeseille: which compiler do you use?
14:48 pmichaud we should probably seek clarification/confirmation.
14:48 pmichaud anyway, I think that attribute typing should generally default to be the same as variable typing
14:48 jnthn OK, I'll wait then. :-)
14:48 pmichaud whatever it ends up being.
14:48 jnthn pmichaud: Yeah
14:48 jnthn Oh, they should be consistent.
14:49 sdeseille gcc -v
14:49 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" :(
14:50 moritz_ sdeseille: I have 4.3.2, maybe that's the difference
14:50 moritz_ 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
14:54 lue well hai there o/
14:54 jnthn moritz_: ah.
14:55 masak lue: hai!
14:57 masak ok, first step of the pls mini-hackathon has been completed. here are a lot of stubbed test cases, in the form of comments. http://github.com/masak/proto/commit/d1​123666b0c1954105a6b511166d21f2a2fd8d7c
14:57 masak people with tuits are encouraged to review these. :) thanks.
14:58 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)
14:58 moritz_ not sure if it's my own error, or parrot's fault
14:58 dalek rakudo: 02d164d | (Vyacheslav Matjukhin)++ | src/Perl6/Actions.pm:
14:58 dalek rakudo: colonpair shortcuts with twigils fixed (closes RT#73908)
14:58 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/0​2d164d9fb828701edb0badc0121fdaab8c1f9be
14:59 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.
15:03 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
15:06 sdeseille ok bye
15:06 moritz_ I've got LexPad.keys working
15:06 moritz_ and LexPad.postcircumfix:<{ }>
15:07 moritz_ but I don't reliably obtain the right lexpad from callframe().my yet
15:07 foodoo joined #perl6
15:11 lue what is this pls mini-hackathon?
15:13 masak lue: basically it's me getting tunnel-vision for a couple of hours and getting the pls core started.
15:14 masak it's going unexpectedly well.
15:14 moritz_ $ /perl6 -e 'sub f { say callframe(1).my.<$x> }; my $x = 5; f()'
15:15 moritz_ 5
15:15 masak \o/
15:16 jnthn moritz_++
15:17 moritz_ if some brave soul wants to write tests for callframe(), I'd be grateful
15:17 moritz_ I'll have to leave in a few minutes
15:17 pmichaud if no tests, open a ticket.
15:18 masak std: my %h = { a-b => 42 }
15:18 p6eval std 31197: OUTPUT«ok 00:01 105m␤»
15:19 masak rakudo: my %h = { a-b => 42 }
15:19 p6eval rakudo 0d0672:  ( no output )
15:19 moritz_ pmichaud: doing that now
15:19 masak rakudo: my %h = { has-b => 42 }
15:19 pmichaud masak: that should fail.
15:19 p6eval rakudo 0d0672: OUTPUT«===SORRY!===␤Malformed has at line 11, near "-b => 42 }"␤»
15:19 masak pmichaud: why?
15:19 masak pmichaud: it's an identifier.
15:19 pmichaud oh, never mind
15:19 pmichaud I meant the curly form earlier, but you're using assignment, not binding.
15:19 masak has-b, however, shouldn't fail.
15:19 pmichaud assignment should be okay.
15:19 pmichaud correct, has-b shouldn't fail.
15:19 * masak submits rakudobug
15:20 masak std: my %h = { has-b => 42 }
15:20 p6eval std 31197: OUTPUT«ok 00:01 105m␤»
15:21 pmichaud workaround for now would be 'has-b' => 42   :-)
15:21 masak aye :)
15:22 dalek rakudo: c19f148 | moritz++ |  (3 files):
15:22 dalek rakudo: callframe().my returns a LexPad.
15:22 dalek rakudo: You can index a lexpad with .{ }, or obtain its .keys.
15:22 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/c​19f148791b9e06b08f3f41bb8a5477548be4e35
15:22 cono std: { :$^q }.(5).perl.say
15:22 p6eval std 31197: OUTPUT«ok 00:01 104m␤»
15:22 cono rakudo: { :$^q }.(5).perl.say
15:22 p6eval rakudo 0d0672: OUTPUT«===SORRY!===␤Symbol '$^q' not predeclared in <anonymous>␤»
15:26 moritz_ somebody should bump PARROT_REVISION to see if rakudo works with latest parrot
15:26 tedv joined #perl6
15:26 pmichaud "method keys" in the LexPad implementation is going to need replacing
15:27 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)
15:27 moritz_ ok
15:27 moritz_ bbl
15:27 dalek rakudo: 57ec550 | jonathan++ | src/Perl6/Compiler/Package.pm:
15:27 dalek rakudo: Default to unconstrained, not Any, for attribvutes in order to be consistent
15:27 dalek rakudo: with variables.
15:27 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/5​7ec55031ffdb7d3462c4fdc4b957fff79f7cf60
15:27 dalek rakudo: ae1300f | jonathan++ | src/core/operators.pm:
15:27 dalek rakudo: Fix infix:<...> with a list to the right so it doesn't flow away data. Patch
15:27 dalek rakudo: courtesty of (Alexey Grebenschikov)++.
15:27 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/a​e1300f47ebafedd6c4255227e32cff19d405128
15:32 pugssvn r31217 | jnthn++ | [t/spec] Update test with default constraint type.
15:39 Visitor99 joined #perl6
15:53 pugssvn r31218 | mmcleric++ | test for RT#74990
15:56 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 patspam joined #perl6
15:56 masak heh, just typing 'git push origin pls' is kinda funny :)
15:58 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.
15:59 pugssvn r31219 | dimid++ | [t/spec] Add tests for RT#75674. infix:<...> works with a list to the right
16:00 lue .oO(oh silly me. tardis -e 'run(git push origin pls);')
16:03 masak it'll be a fine day when we can debug pls with Tardis. :)
16:04 lue > tardis --version
16:04 hercynium joined #perl6
16:04 lue v40TT
16:07 masak we actually haven't had any Tardis releases yet. I'm hoping we'll have one next month, along with Yapsi.
16:10 lue .oO(then where did I get this release from....)
16:11 lue rakudo: say (4 ... ^5)
16:11 p6eval rakudo c19f14: OUTPUT«4321␤»
16:11 lue not yet then...
16:16 justatheory joined #perl6
16:17 Ross joined #perl6
16:19 pmichaud masak: (pattern)  no, I've not seen that yet.
16:20 masak it's just a minor thing, but it looks fairly nice.
16:20 masak it says "I know I'm a string, but I could just as well be a list of 'em"
16:20 pmichaud it will undoubtedly confuse people someday.  :-)
16:20 pmichaud especially if the string ever contains a space :)
16:20 masak :)
16:20 masak been there, done that :P
16:21 pmichaud "I changed <these-quotes> to <these quotes> and got a different answer!"
16:21 pmichaud You could perhaps do   q<these-quotes>
16:21 pmichaud that would be slightly safer, at the cost of a keystroke.
16:22 masak that would defeat the purpose of the pattern: being easily extendable to a list of strings.
16:22 masak well, um, the difference *is* but a keystroke...
16:22 * lue goes and tries to implement andthen and orelse
16:23 lue rakudo: say ord("-") - ord(" ")
16:23 p6eval rakudo c19f14: OUTPUT«13␤»
16:25 Visitor99 left #perl6
16:27 lue what exactly is the pasttype used in Grammar.pm when defining xor, or, and, etc. ?
16:28 pmichaud Rakudo currently treats xor, or, and as binary operators.
16:28 pmichaud $a or $b   is essentially the same as    unless $a { $b }
16:28 pmichaud $a and $b   is essentially the same as    if $a { $b }
16:30 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
16:30 pmichaud (which is partially why they haven't been implemented)
16:30 pmichaud 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.
16:31 pmichaud I don't expect that to happen before R*.
16:31 Visitor99 joined #perl6
16:32 * lue finds out the meaning of thunks :)
16:33 masak the spec has some wording of that.
16:33 masak essentially, it's a closure but without the curlies.
16:34 masak aye, S05:4098.
16:34 pmichaud essentially, it delays the evaluation of an operand until other things have occurred
16:34 masak or S05:4123, after I updated my spec dir. :P
16:34 pmichaud for example, with    "$a + foo()", what happens is that we evaluate $a, evaluate foo(), and then pass the results to &infix:<+>
16:35 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.
16:36 pmichaud 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:37 pmichaud (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.
16:37 * 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.
16:40 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]
16:40 masak here are the commits so far: http://github.com/masak/proto/commits/pls
16:40 pmichaud masak++
16:41 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
16:41 masak much better if you comment on the current data model and the tests so far.
16:42 masak sorear: hello, goodbye. :)
16:42 pugssvn r31220 | sorear++ | [STDeco] reinstate 'snaptest'
16:44 sorear the new makefile is completely in now
16:45 lue \o/
17:04 szabgabx joined #perl6
17:07 lue rakudo: say 3.WHAT ~~ Int
17:07 p6eval rakudo ae1300: OUTPUT«1␤»
17:07 lue rakudo: say (3.2).WHAT ~~ Int
17:07 p6eval rakudo ae1300: OUTPUT«0␤»
17:11 pugssvn r31221 | sorear++ | [STDeco] 'clean' wasn't meant to be the default target...
17:12 ciphertext rakudo: (-5 ... ^5).say
17:12 p6eval rakudo ae1300: OUTPUT«-5-4-3-2-1001234␤»
17:12 pmichaud that still doesn't look right to me.  There's an extra 0.
17:13 lue rakudo: say ($_ for 1..3)
17:13 p6eval rakudo ae1300:  ( no output )
17:13 lue rakudo: say $_ for 1..3
17:13 p6eval rakudo ae1300: OUTPUT«1␤2␤3␤»
17:13 lue rakudo: sub xyzzy($a) { say $a; } xyzzy($_) for ^3
17:13 p6eval rakudo ae1300: OUTPUT«===SORRY!===␤Confused at line 11, near "sub xyzzy("␤»
17:13 pmichaud 'for' doesn't yet know how to return its results.
17:14 pmichaud 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.
17:14 pmichaud need a semi after the curly above
17:15 lue rakudo: sub xyzzy($a) { say $a; }; xyzzy($_) for ^3
17:15 p6eval rakudo ae1300: OUTPUT«0␤1␤2␤»
17:15 lue thank you, pmichaud.
17:16 pmichaud ugh ugh ugh
17:16 pmichaud the new list implementation causes 'use' to fail.
17:16 pmichaud *sigh*
17:17 * pmichaud so does not want to go debugging 'use' right now.
17:18 pmichaud jnthn: ping
17:19 lue did the tests even run?
17:19 pmichaud well, since "use Test" fails... no.
17:19 pmichaud the other sanity tests all run, yes.
17:19 sorear pmichaud: how do multiple return values and destructuring my ($x, $y) = foo(); work in Perl 6, from an implementation perspective?
17:20 pmichaud sorear: well, it's a list assignment
17:20 pmichaud so, foo() returns a parcel, which is then interpreted as a list
17:21 sorear How does the process of interpreting a parcel as a list work?
17:22 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 pmichaud array and hash assignment consume all of the remaining elements of the rhs list
17:22 sorear Does this iteration involve iterators?
17:23 pmichaud well, since lists imply iterators, yes  :)
17:24 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
17:24 sorear What happened to it?
17:24 pmichaud and one doesn't generally interact with the iterators directly
17:24 pmichaud it's now .reify
17:25 pmichaud 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
17:25 pmichaud which is why I'm working (right this minute, in fact) on the new implementation+spec
17:25 pmichaud I don't know if I have list assignment working in the new implementation yet.
17:25 sorear I'm trying to implement multiple return values in viv-psq in the most perl6y way I can
17:26 * 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.
17:26 sorear but without the infinite regress of iterators being defined in terms of multiple returns being defined in terms of iterators
17:27 colomon sorear++
17:27 pmichaud jnthn:  ping ping ping
17:27 pmichaud anyone know how to turn off rakudo's exception backtrace handlers?
17:28 pmichaud right now "use Module"  is giving me
17:28 pmichaud ===SORRY!===
17:28 pmichaud Method 'get' not found for invocant of class 'ParcelIter'
17:28 pmichaud and absolutely no information about where it's coming from.
17:28 lue BacktracePrinter.pm does that delibrately for ===SORRY!=== parse errors.
17:29 pmichaud it can't be a parse error.
17:29 pmichaud method-not-found is almost always a runtime error.
17:30 pmichaud 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"
17:30 sorear 2. "need" is called in Actions.pm
17:30 sorear 3. The module loader is called to load the module
17:31 sorear 3. "import" is called in Actions.pm
17:31 sorear s/3/4
17:31 pmichaud these all sound like nqp-methods, though.
17:31 pmichaud .get would be a Rakudo method.
17:31 sorear yes
17:31 pmichaud something in the process is getting hold of a Parcel
17:31 pmichaud and trying to improperly iterate it
17:31 sorear sounds like bootstrap stage spillage to me
17:31 pmichaud ...bootstrap stage spillage?
17:31 sorear something is interacting with the stage 1 compiler thinking it's made of rakudo
17:32 pmichaud no
17:32 pmichaud wrong
17:32 pmichaud the stage1 compiler completes successfully
17:32 pmichaud I'm even able to compile the setting
17:32 pmichaud (because it doesn't use "use")
17:32 pmichaud it looks to me like need() is calling into circumfix:<{ }>
17:33 pmichaud 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
17:34 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 :)
17:35 pmichaud it won't be next week.
17:35 pmichaud next week is the compiler release.  rakudo * comes after that.
17:35 lue .rnd(Apparently, the 11th Doctor had a hand in Patent Absurdity: http://patentabsurdity.com/about.html)
17:35 pmichaud (rakudo * is not solely a compiler release)
17:35 szabgabx so do you have a date already?
17:35 pmichaud sometime before the end of june.
17:36 szabgabx good
17:36 pmichaud that's our currently plan.
17:36 pmichaud *current
17:36 pmichaud but it's not a hard deadline.  we'd rather be right than on-time.
17:36 szabgabx that's still within "next week" to some value of next :)
17:36 szabgabx yes I know
17:36 szabgabx and that's what I am trying to tell people too
17:36 pmichaud a hard deadline would be end-of-july.  I can't see any reason for us going beyond then.
17:37 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++
17:38 szabgabx and I'll see you at YAPC::NA
17:38 pmichaud agreed :-)
17:38 colomon YAPC::NA!  \o/
17:39 colomon pmichaud: have you branched locally for the new iterator work?
17:39 pmichaud colomon: yes.
17:39 pmichaud I can push it to github if you'd like to follow along :)
17:39 colomon cool.
17:40 colomon 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.
17:40 colomon I think the rest of us could probably help you with that.
17:40 lue where in NA is it?
17:40 colomon lue: Columbus, Ohoi
17:40 colomon Ohio
17:40 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.
17:40 pmichaud 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.
17:41 lue is there any way to get the largest number in an unsorted array? (preferably w/o sorting it)
17:41 colomon lue: max
17:41 pmichaud lue: max
17:41 sorear [max]
17:43 * 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.
17:43 colomon on the other hand, it is a very obvious name for that functionality.  ;)
17:45 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.
17:46 colomon pmichaud: thanks!
17:46 pmichaud it passes all sanity tests but the one that checks for a working Test.pm
17:46 pmichaud (because 'use' is failing)
17:46 pmichaud I'm trying a version w/o use adverbs for now.
17:46 pmichaud I'm hoping to not have to make working hashes a prerequisite for using Test.pm .
17:47 colomon git branch --track list origin/list
17:47 colomon ?
17:48 pmichaud I usually do    git checkout --track -b list origin/list
17:48 pmichaud I think.
17:48 pmichaud arggh, that wasn't it.
17:48 * pmichaud _really_ needs a way to disable the error handler so he can see a full backtrace.
17:49 * pmichaud tries commenting out 'backtrace' in Perl6::Compiler
17:51 lue .oO(perl6 --trainingwheelsoff)
17:52 lue masak: ooh, I would love the tardis right now. My code hangs :(
17:52 pmichaud yay, that worked.
17:53 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
17:54 pmichaud (the version that has my branch in it :-)
17:54 pmichaud s/since/sync/
17:54 colomon compiling branch list now.
17:55 pmichaud aha, I see the problem.
17:55 pmichaud parrot iterators
17:56 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 colomon gotta go finish packing now, actually.
17:58 dalek csmeta: r324 | diakopter++ | trunk/Sprixel/ (3 files):
17:58 dalek csmeta: [perlesque] completed generic method/constructor handling on .NET.  still some
17:58 dalek csmeta: cases not working on mono.
17:58 dalek csmeta: review: http://code.google.com/p/c​smeta/source/detail?r=324
18:00 lue goodluck, colomon
18:12 pmichaud tethering generally worked for me when I was using my Ericsson phones :)
18:12 pmichaud haven't tried it with the Nexus yet.  Also waiting for Froyo to be released.
18:12 lue I'm waiting for a MeeGo phone :)
18:12 lue [I could also by a Nokia N900 and then install meego on it...]
18:14 ciphertext > (4 ... ^5).join(", ").say
18:14 ciphertext 4, 3, 2, 1, 0, 1, 2, 3, 4
18:17 lue \o/
18:39 lue joined #perl6
18:39 lue afk
18:42 diakopter [OT] the frequency with which newswriters/speechwriters use "unprecedented" is unprecedented.  horrifically so.
18:44 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:49 Ross^ joined #perl6
18:49 sorear unlike the last time I tried to implement it, this time it works
19:04 pugssvn r31223 | sorear++ | [STD] Parse quantifiers separated from their atoms by whitespace correctly
19:04 pugssvn r31223 | [viv] Remove the ugly <.ws>* reassociation hack
19:06 masonkramer joined #perl6
19:06 sorear std: 2+2
19:06 p6eval std 31197: OUTPUT«ok 00:01 105m␤»
19:06 cono joined #perl6
19:07 diakopter sorear: hrm
19:07 diakopter that's kinda old
19:08 diakopter like, 20 hours old
19:08 diakopter perhaps the makefile is missing something
19:10 diakopter sorear: it does  make clean ; make snap
19:10 diakopter is that sufficient?
19:10 diakopter the rebuild-std script on p6eval, I mean.
19:10 sorear make snap is gone
19:11 diakopter ah :)
19:11 diakopter that would do it
19:11 sorear I thought it was an implementation detail of snaptest, so I killed it in the great refactor
19:11 diakopter I think TimToady uses it locally to snapshot then test individual things
19:12 diakopter used
19:12 diakopter so what should it be now
19:12 diakopter just `make` ?
19:16 sorear I'll put snap back
19:17 diakopter oky
19:17 diakopter sorear: btw, the pugs websvn is slow only the first hit to each revision's page; the html is cached after that
19:21 pugssvn r31224 | sorear++ | [STD] Parse ~ as a pseudo quantifier so it associates with the right atoms in the first place
19:21 pugssvn r31224 | [viv] No more reassociation!
19:22 pronik joined #perl6
19:23 diakopter sorear: cool
19:24 * diakopter tries to grok DEEP
19:25 diakopter wow.
19:28 sorear right now, DEEP is mostly being used as an enabling technology for optimizations
19:28 sorear it allows the backend to do context-sensitive code generation without having to reparse generated code
19:32 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
19:33 diakopter (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 diakopter others, including sprixel-js, mildew, and redsix
19:33 sorear mangle.pl is used by CursorBase, STD, and viv
19:33 diakopter ok
19:34 sorear make snap should work now
19:34 diakopter it'll run at :37
19:34 diakopter erp
19:34 diakopter except the time on that machine appears to be very off :)
19:35 diakopter no wonder folks have had confusion about the cron
19:35 diakopter :)
19:37 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"␤»
19:38 masonkramer rakudo: Qw//
19:38 p6eval rakudo ae1300: OUTPUT«===SORRY!===␤Confused at line 11, near "Qw//"␤»
19:39 masak joined #perl6
19:40 masak ahoy, #perl6!
19:40 diakopter hiz
19:40 sorear Hi!
19:40 masonkramer ahoy
19:40 masak and now... isn't it time for some self-criticism? http://fixingsoftware.blogspot.com/2010/​06/chromatic-and-cher-walk-into-bar.html
19:40 * sorear reads up on .NET aggregate types
19:41 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
19:41 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!
19:42 sorear "make the world use Perl 6" is not my agenda
19:42 sorear "make Perl 6 awesome" is
19:42 masak sorear++
19:42 masak sorear: I, for one, welcome that kind of lack of humility! :)
19:43 sorear plus, he has his facts wrong.  chromatic is not
19:43 sorear "Mr. Christopher"
19:43 masak right.
19:43 sorear I know chromatic's first and last names, neither of them is Christopher
19:44 masak I also reflected on that.
19:44 masak the whole thing is reminiscent about the guesses of _why's "true" identity.
19:45 masak 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
19:46 diakopter (not just optimized in the source language, but treated specially by the JIT)
19:46 sorear eew.
19:46 diakopter what's eew about it?
19:46 * sorear doesn't like compilers with special knowledge of the code they're compiling
19:47 diakopter I could have stated it another way, you know :P
19:47 sorear no, I didn't?
19:47 masak rakudo: say (-5 ... ^5).perl
19:47 p6eval rakudo ae1300: OUTPUT«(-5, -4, -3, -2, -1, 0, 0, 1, 2, 3, 4)␤»
19:47 diakopter std is rebuilding, I think
19:47 sorear Are "dynamic" and "System.Dynamic" synonymous?
19:47 * masak submits rakudobug
19:48 diakopter sorear: well... you're not going to want to use dynamic
19:48 diakopter mono 2.6.4 doesn't really support it
19:48 diakopter mono svn supposedly does
19:48 diakopter besides, it's a C# keyword
19:49 diakopter sorear: I'm curious to see what you have so far
19:50 diakopter I think I would have some good comments on it
19:51 diakopter 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 diakopter few*er
19:52 diakopter System.Dynamic is a namespace, not a type
19:54 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
19:54 diakopter :(
19:54 diakopter I think it's going to have to be much more unsugared than that
19:54 diakopter System.Dynamic isn't a type
19:54 sorear yeah
19:54 sorear I just found out
19:55 sorear which derails some part of my plans
19:55 diakopter see what I wrote above
19:55 diakopter about mono
19:55 sorear yes
19:55 sorear that's how I found out
19:55 diakopter oh :)
19:55 diakopter std rebuild got an error
19:55 diakopter 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.
19:55 diakopter make: *** [stage3/Cursor.store] Error 2
19:55 diakopter when trying:    cd stage0 && ./std CORE.setting
19:56 diakopter oh, hrm, maybe it didn't svn update
19:56 diakopter well no, it would have had to
19:57 diakopter 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
19:57 diakopter I reversed the lines.
19:57 diakopter cd stage0 && ./std CORE.setting
19:57 diakopter then the two error lines.
19:58 sorear that makes even less sense
19:58 diakopter note, the compilation is still proceeding
19:58 diakopter apparently
20:02 diakopter ok, it stopped
20:02 sorear can you nopaste the transcript?
20:03 diakopter ok
20:03 diakopter ok, odd
20:03 diakopter apparently it's....
20:03 diakopter erm
20:03 diakopter two rebuilds were occuring.  either the cron one stomped on mine or vice versa
20:03 diakopter :)
20:04 diakopter I'll wait for this one to finish (or fail)
20:04 Psyche^ joined #perl6
20:04 sorear now /that/ makes some kind of sense
20:04 diakopter sorry :(
20:05 diakopter sorear: I firmly believe we'll need a metaobject layer for declaration/accessing/invoking everything but strongly typed/primitive routine-locals
20:06 masak rakudo: say (-5 ... 5).perl
20:06 p6eval rakudo ae1300: OUTPUT«(-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5)␤»
20:06 masak aha!
20:06 diakopter sorear: or even perhaps without that exception
20:07 diakopter sorear: and that metaobject layer will need manually written in either C# or perlesque (doesn't matter much)
20:07 diakopter and that metaobject layer will look very similar to rakudo's and smop's
20:08 diakopter ..speaking loosely/hand-wavingly..
20:09 * sorear tries to imagine a meta object layer
20:10 diakopter smop's is detailed in the perl6 wiki on tpf's site
20:11 diakopter http://www.perlfoundation.org/perl6/index.cgi?smop
20:12 tlb joined #perl6
20:13 diakopter http://www.perlfoundation.org/perl6/i​ndex.cgi?smop_p6opaque_implementation and http://www.perlfoundation.org​/perl6/index.cgi?smop_oo_api
20:14 sorear yeah I've read all the smop stuff
20:14 sorear pretty trippy is all I can say :/
20:14 diakopter well, much of it is spec'd, and much of it is implemented in rakudo
20:14 diakopter the p6opaque stuff anyway
20:15 diakopter afaik.
20:19 diakopter sorear: I think you're trying to *implement* Perl 6 in the emit-psq step
20:19 diakopter that's not what I had in mind at all
20:20 diakopter I think there should be a special emit-std-psq for bootstrapping
20:21 diakopter 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")
20:21 masonkramer eval: -> %h { say %h }.("a" => "b")
20:21 sorear STD is written in Perl 6
20:21 masonkramer rakudo: -> %h { say %h }.("a" => "b")
20:21 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␤»
20:21 diakopter sorear: and?
20:22 mrsaturn joined #perl6
20:22 sorear I need to implement /some/ of Perl 6 in emit-psq
20:22 sorear Otherwise std-psq will not work
20:22 diakopter ok.
20:22 diakopter here's an idea I discussed with TimToady on that
20:23 diakopter 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
20:23 sorear I considered that, but thought there was no chance he'd support...
20:24 diakopter iiuc he said that would be just fine
20:25 diakopter jnthn also (half tongue-in-cheek) commented that it would make copying/pasting from STD to rakudo slightly slower :)
20:25 diakopter that way you wouldn't need Any or even Cool
20:27 diakopter see, I don't want "Any" or "Cool" to be .NET types
20:28 diakopter (types written in Perlesque as classes)
20:28 diakopter I think they should be part of our own responder/type system
20:28 diakopter one pointer away from the .net object system
20:29 diakopter I know how to emit code for the polymorphic inline caching at callsites
20:29 diakopter but that's an optimization
20:29 diakopter (for later)
20:29 ciphertext masak: see http://rt.perl.org/rt3/Tic​ket/Display.html?id=75674 (esp. last post) re double zeros
20:30 masak ciphertext: oh, ok.
20:31 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:32 diakopter and we'd create the p6o type system on top of that
20:33 diakopter 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 diakopter but again, an optimization
20:35 diakopter 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:36 sorear we might want a different name
20:36 diakopter ok :)  you pick
20:36 sorear the 'p' in p6opaque officially stands for pmichaud
20:36 sorear not perl6
20:36 diakopter really?? :)
20:36 diakopter I didn't know that
20:37 masak news to me too.
20:37 masak but it makes sense, what with PmWiki, and PGE. :P
20:37 masak conquering the world, one P at a time...
20:38 masak at least we have PCT, which... OH NOES!
20:38 diakopter sorear: where'd you read that
20:40 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.
20:40 diakopter pmichaud: does "p6o" as our root type borrow too much from p6opaque?
20:41 sorear aha
20:41 sorear 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"
20:41 sorear 2010.03.11.13.03.42 <@pmichaud> and I used "p6" instead of "Perl6" to explicitly designate that this was a lightweight version.
20:41 * sorear stands corrected.
20:41 diakopter hee
20:41 * diakopter giggles
20:41 diakopter maybe just "po" then
20:42 diakopter as in "po'"
20:42 sorear the wrong version seems to have orriginated from http://trac.parrot.org/parrot/wiki/ParrotQuotes
20:44 masak sorear: I think that some of the quotes in there are not meant seriously.
20:44 masak just a thought. :P
20:46 diakopter http://www.perlfoundation.org/perl6/index.cgi?​smop_values_not_subject_to_garbage_collection  apparently "Buy Wellbutrin" are one the List of immortal values
20:46 eternaleye joined #perl6
20:46 masak :D
20:46 masak thrice!
20:49 colomon joined #perl6
20:50 colomon woah.
20:50 diakopter ?
20:50 diakopter tethering works?
20:50 colomon Yup.
20:51 colomon 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:55 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 masak it's a bit strange, and only the 'test' subcommand behaves like this.
20:56 masak but it appears to be what the user would expect.
20:56 masak probably `pls test --with-deps A` would make the behaviour consistent again.
21:01 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:02 masak yes, he has hinted at some paper or other that he read once.
21:04 colomon jaysus, he read a paper!  we'd better shut down perl 6 development asap.
21:05 masak when chromatic confronted him, he almost remembered which paper it was: http://use.perl.org/comments.pl?sid=4​4783&amp;threshold=0&amp;commentsort=​0&amp;mode=thread&amp;pid=72028#72029
21:07 masak oh, look! he did the same with me once! http://www.twitlonger.com/show/4p4kr
21:07 masak anyway, it must have been a really convincing article for him to be so adamant about it.
21:09 Guest55077 left #perl6
21:10 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 PerlJam oh wait ... I just made that up   ;-)
21:11 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.
21:11 colomon jnthn: o/
21:11 PerlJam masak: what language worth learning is?
21:12 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 masonkramer_ joined #perl6
21:12 diakopter oh, 1st edition.
21:12 diakopter sigh
21:14 lucs joined #perl6
21:14 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:15 colomon hmmm, pmichaud++ doesn't seem to have converted very many of the iterators yet.
21:17 masak I have a feeling he's working on it locally, and waiting to push until he has a substantial fix.
21:18 PerlJam that's his typical modus operandi
21:19 PerlJam Why does ank keep calling chromatic "Mr. Chistopher"?
21:19 masak my guess is because he thinks that's his real name.
21:19 masak and because he thinks that by using his real name, he infuriates or exasperates chromatic.
21:20 masak 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
21:21 p6eval std 31225: OUTPUT«ok 00:01 105m␤»
21:21 diakopter sorear: it workethd
21:21 masak std: 2<2
21:21 p6eval std 31225: OUTPUT«[31m===[0mSORRY![31m===[0m␤Whitespace required before < operator at /tmp/aSbkzXSrpe line 1:␤------> [32m2<[33m⏏[31m2[0m␤    expecting escape␤Parse failed␤FAILED 00:01 104m␤»
21:22 colomon masak: he's pushed a branch already, so no problems with partial fixes
21:23 masak colomon: oh! ok.
21:23 jnthn Oh, we have a list refactor branch?
21:23 colomon yes
21:23 colomon called list
21:24 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++
21:26 jnthn Today's hackmeet was quite a win. :-)
21:27 colomon jnthn++
21:27 colomon I love seeing all the patches from today.
21:27 jnthn Gave 3 people spectest commit bits - which I think all of them used.
21:27 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?
21:27 jnthn pronik: You may use either.
21:28 jnthn One person today with relatively little assistance implemented "cando" too. :-)
21:28 jnthn Though had network problems.
21:28 masak \o/
21:28 jnthn I worked with them on some initial handles support too
21:28 moritz_ \o/
21:28 pronik jnthn: and which is preferred? timtowtdi, I know, but which would be preferred for official docs and/or a book?
21:29 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 >>
21:29 jnthn And I'm lazy.
21:29 moritz_ pronik: for example if you have a hash value that holds a list, like $h<foo>
21:30 moritz_ than $h<foo>».meth clearly beats $h<foo>>>.meth
21:30 jnthn moritz_: Yes, in that case it is nicer visually.
21:30 masak std: my %h; %h<foo>>>.meth
21:30 p6eval std 31225: OUTPUT«ok 00:01 105m␤»
21:30 moritz_ both work in rakudo
21:30 jnthn Yeah, that one always looks a tad odd to me, even though it parses just fine.
21:31 masak :)
21:31 moritz_ hugme: add /w 19
21:31 moritz_ sorry
21:31 moritz_ hugme: add rassie to book
21:32 * hugme hugs rassie. Welcome to book!
21:32 moritz_ pronik: you now have commit access. Welcome!
21:36 pronik` joined #perl6
21:36 moritz_ rakudo: say { :$^p }.(5).perl
21:36 pronik` thanks, gotta kill that private clone of mine then :)
21:36 p6eval rakudo ae1300: OUTPUT«"p" => 5␤»
21:37 moritz_ \o/
21:40 dalek csmeta: r325 | diakopter++ | trunk/Sprixel/src/Grammar/ParseEnv.cs:
21:40 dalek csmeta: [perlesque] add ParseEnv.cs
21:40 dalek csmeta: review: http://code.google.com/p/c​smeta/source/detail?r=325
21:44 jnthn moritz_: Yes, that was another patch from today :-)
21:48 masak anyone else get this? I'm just loading a class through a module, calling a method on it. Null PMC access. http://gist.github.com/436120
21:49 masak it feels strange that something like this would go unnoticed for very long. maybe my local build is corrupted somehow.
21:50 * moritz_ gets the same
21:50 * masak submits rakudobug
21:50 jnthn Me too...wtf.
21:51 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?
21:51 masak as you can see, I'm writing new code today. :) that's when one discovers all the 'obvious' bugs.
21:51 sorear Which is to say, no attention at all.
21:51 masak sorear: I'm sure that's what many people are doing.
21:51 azert0x joined #perl6
21:51 moritz_ sorear: +1
21:51 lue ohai
21:52 masak lue: \o
21:52 PerlJam rakudo: class A { method x {} }; say A.new.x
21:52 p6eval rakudo ae1300: OUTPUT«Null PMC access in type()␤  in main program body at line 11:/tmp/w1nvqVvliJ␤»
21:52 PerlJam rakudo: class A { method x {return} }; say A.new.x
21:52 p6eval rakudo ae1300: OUTPUT«␤»
21:52 * masak submits another rakudobug
21:52 masak those two are distinct.
21:52 jnthn Really?
21:52 jnthn oh, yes, I think they are.
21:53 masak oh wait. no.
21:53 masak PerlJam++'s is an easier case of mine.
21:53 jnthn oh, yes is
21:53 jnthn grr
21:54 jnthn It's probably the same old "null return" thing.
21:54 colomon rakudo: class A { method x { 1; } }; say A.new.x
21:54 PerlJam seems so.
21:54 p6eval rakudo ae1300: OUTPUT«1␤»
21:54 PerlJam rakudo: class A { method x { ; } }; say A.new.x
21:54 p6eval rakudo ae1300: OUTPUT«Null PMC access in type()␤  in main program body at line 11:/tmp/SoVGGweExB␤»
21:56 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␤»
21:57 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 masak golf :)
21:57 lue golf?
21:58 masak lue: http://en.wikipedia.org/wiki/Golf
21:58 masak it's a sport involving clubs and a ball.
21:58 masak an attempt is made to get the ball into a hole with a minimum number of strokes.
22:01 lue :)
22:02 lue were you golfing in P6 then?
22:03 azert0x joined #perl6
22:03 masak because small examples of an error have many advantages over large examples of the same error.
22:03 azert0x joined #perl6
22:04 jnthn time for some rest...night o/
22:04 masak jnthn: 'night!
22:04 ingy hi
22:04 masak ingy! \o/
22:04 ingy hi masak
22:04 azert0x joined #perl6
22:05 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.
22:05 masak lue: those are a few reasons.
22:06 masak ingy: cool! I think I saw someone mention the idea on Twitter.
22:06 lue .oO[ i.e. Gtk::Add(REROUTE::Qt::4::Integer(3)) is worse that 3+ :) ]
22:06 PerlJam ingy++
22:06 azert0x joined #perl6
22:07 ingy not only can you compile py js and p6 to pir, you can compile pir to a dozen languages
22:07 ingy with full HelloWorld support!
22:07 ingy :)
22:07 masak \o/
22:08 ingy masak: going to YAPC?
22:08 masak which one?
22:08 ingy NA
22:08 masak no :(
22:08 ingy nod
22:08 masak will try to make it to EU, though.
22:08 masak ingy: we still need a YAML parser for Perl 6 :)
22:09 masak I think all the obstacles on the grammar side have been removed by now.
22:09 masak we have variable interpolation and variables in closures in regexes.
22:09 masak ingy: would you like to be part of an effort to write one?
22:09 ingy masak: yes
22:09 masak ingy: I have a feeling you know which tests to use to get started.
22:10 masak 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 masak sure. if you think that's the easiest route.
22:11 ingy that way the same tests can be applied everywhere
22:11 ingy in the long run, yes
22:11 masak I was kinda hoping there'd be some existing test suite one could port...
22:11 ingy well sure
22:12 lue .oO(Yet Another......Meta Language?)
22:12 masak which one would you recommend among those?
22:12 ingy Test::Base *is* TestML
22:12 masak right.
22:12 ingy and there are lots of tests already in that
22:12 masak for YAML?
22:12 ingy yes
22:12 ingy YAML.pm etc
22:13 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
22:13 ingy let's make the P6 one the role model
22:13 ingy :)
22:14 ingy hey
22:14 masak hey!
22:14 ingy can P6 bind to C libs?
22:14 lue What does YAML stand for?
22:14 masak Rakudo can, through zabolaj.
22:14 ingy if so, we absolutely must use libyaml
22:15 masak lue: are you in a location where Google doesn't work? :)
22:15 masak ingy: see? you're already helping! :)
22:15 ingy masak++ # lol
22:15 lue Last time I checked, Google worked in California :)
22:15 masak lue: well, use it! :P
22:15 ingy YAML Ain't Markup Language
22:15 ingy srsly
22:16 masak lue: meet Mr. YAML: ingy-san himself.
22:16 ingy masak: you are in .no?
22:16 masak close. .se
22:16 ingy ah
22:16 lue .oO(bad time to forget the Japanese honorific for someone above you.)
22:17 ingy maybe there's a way to get me out there
22:17 ingy to hack for a couple weeks sometime
22:17 masak my floor is at your disposal.
22:17 ingy :D
22:17 masak \:D/
22:17 ingy are you in stockholm?
22:17 masak close. Uppsala. :)
22:18 awwaiid joined #perl6
22:18 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.
22:18 masak ingy: you are? and you're willing to spend some of it on p6?
22:18 masak that's great news!
22:18 masak I have, like, so many projects!
22:19 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... :)
22:19 ingy I guess I could add some....
22:19 ingy masak: Have you heard of Ingy's PYRL?
22:20 masak 不是. I haven't.
22:20 ingy http://ingy.pyrl.org/
22:20 ingy PYRL == Project's You'll Really Like
22:20 ingy err
22:20 masak nice!
22:20 ingy s/'//
22:21 masak "Overzealous Apostrophe" would be a cool name for a rock band.
22:21 ingy masak: http://acmeism.org/
22:21 masak that one, I've seen.
22:21 masak kudos.
22:21 masak we need more synergy in the world. it gets so boring when people trench down and go all language-y.
22:21 ingy masak: by definition, I am willing to spend time on P6
22:21 ingy as long as I can do it in Python
22:22 masak sure!
22:22 ingy ;)
22:22 masak that's fine by me.
22:25 lue (Let's code a P6 interpreter for the SNES and vice versa!)
22:32 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>␤»
22:32 lue rakudo: my $x = 5; given $x { when 5 { say "o";}; else { say "X";};};
22:32 p6eval rakudo ae1300: OUTPUT«o␤»
22:32 masak er.
22:32 masak right. that works because the sub &else is never called.
22:33 masak lue: not to go all RTFM-y on you, but... may I recomment a refreshing re-read of S04 :)
22:33 masak s/recomment/recommend/
22:33 masak lue: also, you don't need semis after *every* closing curly. just those who preceed a statement.
22:34 masak s/who/which/
22:34 astrojp joined #perl6
22:38 lue Considering given/when apparently works, I only need := binding.
22:41 pmichaud good afternoon, #perl6
22:41 diakopter how.
22:41 tomaw joined #perl6
22:43 lue bon apres-demain!
22:58 sorear I need a syntax for assigning a static type to a contextual.
22:59 diakopter eh?
23:01 sorear When STD.pm6 talks about $*CURPAD, what is the type of that expression?
23:01 sorear after translating to perlesque
23:02 diakopter how about FrameScope
23:02 diakopter it's an inheriting hash
23:02 diakopter with all the methods you'd expect
23:02 sorear how about what?
23:03 diakopter is CURPAD some kind of symbol table?
23:03 sorear if it has type FrameScope, can I call Stash methods on it?
23:03 diakopter what is "Stash"
23:04 sorear Stash is a class defined in Stash.pm6
23:04 sorear It represents a compilation symbol table
23:04 * diakopter looks
23:04 sorear $*CURPAD is a dynamically scoped variable which points to the current definition symbol table
23:04 diakopter I'm sure I can translate those to the FrameScope equivs
23:05 sorear actually it's defined in Stash.pmc
23:05 sorear How about $*IN_DECL?  It's a boolean.
23:05 diakopter bool I guess
23:06 sorear u15:58 < sorear> I need a syntax for assigning a static type to a contextual.
23:06 sorear 15:59 <@diakopter> eh?
23:06 sorear it's the syntax I need, not the type mapping...
23:06 Visitor99 hi... anyone knows a good tutorial on perl6 'rules'?
23:06 diakopter sorear: oh; sorry :)  sec...
23:07 masak joined #perl6
23:07 diakopter sorear: oh, true is 1; false is 0; I'm almost certain runsharp does that lowering
23:07 diakopter if not I'll just make keywords...
23:08 sorear What question did I ask?
23:08 masak Visitor99: http://perlgeek.de/blog-en​/perl-5-to-6/07-rules.html
23:08 sorear You're not answering the question I'm *trying* to ask...
23:08 masak Visitor99: http://perl6advent.wordpress.com/​2009/12/10/day-10-a-regex-story/
23:08 diakopter sorear: explain 'static type' more
23:08 Visitor99 thanks! bookmarked :)
23:09 Visitor99 left #perl6
23:09 sorear diakopter: perlesque needs to know the type of every expression.  true or false?
23:09 diakopter correct.
23:09 masak Visitor99: also, looking at solid examples is a good idea: http://github.com/moritz/jso​n/tree/master/lib/JSON/Tiny/
23:09 sorear diakopter: if $*SOMETHING appears in the Perl6 source, what should it translate to in output?
23:10 diakopter whatever type $*SOMETHING was originally declared as (or initialized to)
23:11 sorear $* variables in Perl6 are not and cannot be declared
23:11 sorear so they can't be declared as being of any type
23:11 diakopter std: my int $*hi
23:11 p6eval std 31225: OUTPUT«ok 00:01 104m␤»
23:11 sorear afk
23:12 diakopter (I'm not trying to flippantly prove you wrong, but I do want to know whether std is correct here)
23:12 diakopter I realize they are not "declared"
23:13 diakopter but upon first stumbling upon them in the source code, a perlesque compiler can infer its type at that point.
23:13 diakopter 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
23:14 diakopter er, dynamics
23:16 mberends joined #perl6
23:16 diakopter mberends: hi
23:17 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␤»
23:17 mberends hi diakopter, just rolled in from Calais :) it was a nice Perl Workshop
23:17 mberends hi masak
23:17 masak rakudo: .say for $*IN.lines
23:17 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
23:17 p6eval ..stark…
23:17 masak mberends: hi mberends! \o/
23:18 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.
23:19 masak 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 #perl6
23:20 masak mberends: try http://ditaa.sourceforge.net/ :)
23:20 masak mberends: basically though, App::Pls::Core is a state machine, following preset rules to update the states of all the projects in parallel.
23:23 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.
23:24 masak mberends: my mental model does not yet incorporate the cache, because the cache is not something that the core knows about.
23:24 masak but, hm. let's see. that doesn't sound like a project.
23:24 masak the only time that's relevant is during an upgrade.
23:24 mberends masak: in theory ok, but it may be that in practice there are funny corner cases that need explicit handling
23:25 masak hence the tests.
23:25 mberends :)
23:25 masak and due to rule (1) above, upgrades have to be very roll-backable.
23:25 masak a failed step during an upgrade must revert the project state to 'installed'.
23:26 mberends ok, so the upgrade needs to be careful to be able to roll back perfectly
23:27 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 masak unless, hm.
23:27 masak unless the install itself fails.
23:28 masak 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.
23:28 masak oh, sure!
23:28 masak that's the whole idea of this. we make the core sturdy enough to handle all eventualities.
23:29 mberends +1
23:29 masak mberends: have you seen the tests I've been writing today?
23:29 masak I think they might interest you.
23:29 mberends not yet. They do interest me, a lot.
23:29 masak http://gist.github.com/masak/​proto/tree/pls/t/subcommands/
23:29 mberends btw, is the 'install Rakudo' functionality going to be dropped?
23:30 masak depends what you mean.
23:30 masak in the bootstrapping phase, yes.
23:30 masak people complain about it, and I agree with them.
23:32 mberends ok, we don't want confusion and http://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.
23:33 masak by the way, I was thinking I'd write tests for the error messages as well.
23:33 masak soon as I'm done with the core.
23:35 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)
23:35 masak lue: not sure I follow you there.
23:36 masak 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.
23:36 masak mberends: sometimes I add or remove some when fleshing out the tests.
23:37 masak 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:39 lue So, Proto is in P6? I could swear it was P5...
23:39 masak the wrapper is.
23:40 masak it then delegates to the installer, which is in Perl 6.
23:40 masak 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. :)
23:41 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:42 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.
23:42 masak my use case was Perl5/Perl6 tests.
23:42 diakopter std: package p6;
23:42 p6eval std 31225: OUTPUT«[31m===[0mSORRY![31m===[0m␤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:␤------> [32mpackage p6[33m⏏[31m;[0m␤    expecting any of:␤  name␤   trait␤Parse
23:42 p6eval ..failed␤FAILED 00…
23:42 mberends lue: I thought of you when writing that question. A nice yak to shave.
23:43 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 :)
23:44 masak bit of a trivial example, but technically... :)
23:44 masak thing is, more elaborate programs tend to contains loops and conditions and similar.
23:45 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.
23:45 masak hence, #`[]
23:46 masak at least it hides Perl 5 code from Perl 6.
23:46 masak the other direction is left as an exercise to the lurker.
23:47 lue masak: Oh! Now I see :)
23:47 lue 5->6 that is.
23:48 lue 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?
23:48 diakopter oh :| sorry
23:49 diakopter I don't know
23:49 sorear diakopter: also, did you just imply that perlesque itself should be handling contextuals?
23:49 diakopter it's 90% implemented
23:49 diakopter I'd think they should translate fairly directly from STD's use of them
23:50 diakopter but maybe not other Perl 6 code's use
23:51 diakopter by "90% implemented" I mean "more tests need written (and verified, and bugs fixed if it fails the tests)
23:51 diakopter "
23:52 sorear where is the list of valid perlesque types?
23:53 diakopter any .net type, plus the classes declared in Sprixel
23:53 diakopter the primitives mapping is in ResolveType in Grammar.cs
23:53 diakopter :) a bad place for it
23:55 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)

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs