Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2012-04-05

Perl 6 | Reference Documentation | Rakudo

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

All times shown according to UTC.

Time Nick Message
00:00 timotimo n: <1 2 3 4>.map: { .say }
00:00 p6eval niecza v15-6-gefda208: OUTPUT«1␤2␤3␤4␤»
00:00 timotimo n: ((-1..1) X (-1..1)).map: { .say }
00:00 p6eval niecza v15-6-gefda208:  ( no output )
00:00 timotimo i do not understand this
00:00 timotimo n: ((-1..1) X (-1..1)).tree.perl
00:00 p6eval niecza v15-6-gefda208: OUTPUT«Unhandled exception: Unable to resolve method tree in class List␤  at /tmp/15vJd3dTC0 line 1 (mainline @ 3) ␤  at /home/p6eval/niecza/lib/CORE.setting line 3842 (ANON @ 3) ␤  at /home/p6eval/niecza/lib/CORE.setting line 3843 (module-CORE @ 65) ␤  at /home/p…
00:00 timotimo n: ((-1..1) X (-1..1)).perl
00:01 p6eval niecza v15-6-gefda208:  ( no output )
00:01 timotimo n: say ((-1..1) X (-1..1)).perl
00:01 tyatpi joined #perl6
00:01 p6eval niecza v15-6-gefda208: OUTPUT«(-1, -1, -1, 0, -1, 1, 0, -1, 0, 0, 0, 1, 1, -1, 1, 0, 1, 1).list␤»
00:01 tyatpi_ joined #perl6
00:01 Trashlord joined #perl6
00:01 timotimo n: ((-1, 1) X (-1, 1)).map { say "hm."; }
00:01 p6eval niecza v15-6-gefda208: OUTPUT«[31m===[0mSORRY![31m===[0m��Unexpected block in infix position (method call needs colon or parens to take arguments) at /tmp/_MOAJrKYCr line 1:�------> [32m((-1, 1) X (-1, 1)).map [33m�[31m{ say "hm."; }[0m��Parse failed��»
00:01 timotimo n: ((-1, 1) X (-1, 1)).map: { say "hm."; }
00:01 p6eval niecza v15-6-gefda208: OUTPUT«hm.␤hm.␤hm.␤hm.␤hm.␤hm.␤hm.␤hm.␤»
00:02 timotimo n: ((-1..1) X (-1..1)).map: { say "hm."; }
00:02 p6eval niecza v15-6-gefda208:  ( no output )
00:02 timotimo i see. i guess?
00:09 timotimo niecza does perform very much better at junctions, though
00:10 timotimo a simple benchmark says 40sec for rakudo, 3 seconds for niecza
00:13 TimToady there are a number of tasks that niecza does 20x faster than rakudo, so this is probably just that, whatever it is
00:23 cbk1090 joined #perl6
00:23 diakopte1 .
00:28 timotimo TimToady: when i do $x & $y & $z == -1 | 0 | 1 vs when i do 0 <= ($x + 1) <= 2 and 0 <= ($y + 1) <= 2 and 0 <= ($z + 1) <= 2 i time 40 seconds for the first and 6 for the second
00:30 timotimo both on rakudo i mean
00:30 timotimo that's pretty drastic i think
00:30 geekosaur timotimo, I think all you're learning is that rakudo (or, often, parrot) sucks, which isn't news
00:31 timotimo oke :|
00:31 geekosaur in particular it is well known that rakudo has severe performance issues in general
00:32 timotimo i wouldn't complain as much if niecza would run the code i'm trying to develop :p
00:33 geekosaur take it as a subtle hint that you should be contributing code to make it work?  :)
00:33 geekosaur (...not that I could do so, even...)
00:33 timotimo ;)
00:52 whiteknight joined #perl6
00:53 dalek specs: 2d1c745 | (Herbert Breunung)++ | S28-special-names.pod:
00:53 dalek specs: fixed my own bug s/=dATA/=data/
00:53 dalek specs: review: https://github.com/perl6/specs/commit/2d1c745b50
00:53 havenn joined #perl6
00:56 sorear good * #pel6
00:56 dalek specs: dec4822 | (Herbert Breunung)++ | S28-special-names.pod:
00:56 dalek specs: forgot v++ im noob
00:56 dalek specs: review: https://github.com/perl6/specs/commit/dec48228bf
00:57 moritz good *, sorear
01:00 whiteknight joined #perl6
01:00 sorear flussence: I've tried --llvm - you need to compile it specially, and moreover niecza takes more than a minute to start in a LLVM-enabled mono.  Yes it's faster at runtime, but no thanks.
01:00 sorear masak: S02:4481 # IntStr
01:01 spaceships joined #perl6
01:08 sorear std: [.rotate(-1)]
01:08 p6eval std 1ad3292: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Method call found where infix expected (change whitespace?) at /tmp/Md9Fl4UXVA line 1:â�¤------> [32m[[33mâ��[31m.rotate(-1)][0mâ�¤    expecting infix or meta-infixâ�¤Parse failedâ�¤FAILED 00:00 41mâ�¤Â»
01:25 scott___ joined #perl6
01:31 lichtkind good night
01:34 TimToady evalbot rebuild std
01:34 p6eval OK (started asynchronously)
01:54 sorear shiny, looks like I have a lot of stuff to forward from std
02:02 tokuhirom joined #perl6
02:06 TimToady std: [.rotate(-1)]
02:06 p6eval std 1ad3292: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Method call found where infix expected (change whitespace?) at /tmp/VV3PKuRvt1 line 1:â�¤------> [32m[[33mâ��[31m.rotate(-1)][0mâ�¤    expecting infix or meta-infixâ�¤Parse failedâ�¤FAILED 00:00 41mâ�¤Â»
02:07 TimToady sssssllllllllllloooooooooooooooooo​ooooooooowwwwwwwwwwwwwwwwwwwwwwwww
02:11 vlixes joined #perl6
02:23 orafu joined #perl6
02:24 PZt joined #perl6
02:31 benabik joined #perl6
03:06 leprevost joined #perl6
03:57 fgomez joined #perl6
04:18 ingy joined #perl6
04:18 ruoso joined #perl6
04:57 NamelessTee joined #perl6
05:10 birdwindupbird joined #perl6
05:21 kaare_ joined #perl6
05:39 moritz TimToady: the rebuild infrastructure isn't quite in place yet on feather{1,3}
05:46 kaleem joined #perl6
05:56 agentzh joined #perl6
06:22 brrt joined #perl6
06:45 wtw joined #perl6
06:46 tarch joined #perl6
06:59 grondilu joined #perl6
06:59 grondilu perl6: say defined(Mu|Mu)
06:59 p6eval pugs: OUTPUT«*** No such subroutine: "&Mu"␤    at /tmp/dz4Ijbdy02 line 1, column 13-18␤»
06:59 p6eval ..rakudo 4373f0, niecza v15-6-gefda208: OUTPUT«True␤»
07:00 grondilu shouldn't this return False??
07:01 moritz grondilu: no, the Mu|Mu junction is defined
07:01 moritz grondilu: defined() doesn't autothread; otherwise defined(Mu) couldn't dispatch
07:02 grondilu ok.  How can I know wether a function autothreads?
07:02 grondilu I mean, apart from testing :)
07:02 moritz by looking at the signature
07:02 moritz if a parameter accepts Mu or Junction, it does not autothread
07:03 grondilu ok.  Makes sense.
07:03 grondilu perl6:  package Foo { my Int $x };
07:03 p6eval niecza v15-6-gefda208: OUTPUT«Potential difficulties:â�¤  $x is declared but not used at /tmp/9GUkQsHh9t line 1:â�¤------> [32mpackage Foo { my Int [33mâ��[31m$x };[0mâ�¤â�¤Â»
07:03 p6eval ..pugs, rakudo 4373f0:  ( no output )
07:03 doy p6: say &defined.perl
07:03 p6eval niecza v15-6-gefda208: OUTPUT«sub defined(Any \x) { ... }␤»
07:03 p6eval ..rakudo 4373f0: OUTPUT«sub defined(Any ) { ... }␤»
07:03 p6eval ..pugs: OUTPUT«\:($?1 is copy) {}{Prim ([Val] -> Eval Val)}␤»
07:03 grondilu perl6:  package Foo { our Int $x };
07:03 p6eval niecza v15-6-gefda208: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤â�¤Common variables are not unique definitions and may not have types at /tmp/EUF9ku4TRb line 1:â�¤------> [32mpackage Foo { our Int $x [33mâ��[31m};[0mâ�¤â�¤Unhandled exception: Check failedâ�¤â�¤  at /home/p6eval/niecza/boot/lib/CORE.…
07:03 p6eval ..rakudo 4373f0: OUTPUT«===SORRY!===␤Cannot put a type constraint on an 'our'-scoped variable at line 1, near "};"␤»
07:03 p6eval ..pugs:  ( no output )
07:04 grondilu rakudo doesn't accept type constraints on our-scoped variables??
07:04 moritz neither does niecza
07:04 grondilu it's not in spec, is it?
07:04 brrt joined #perl6
07:05 moritz I have no idea
07:05 moritz anyway, rakudo's &defined.perl output is wrong
07:05 moritz it's really (Mu), not (Any)
07:06 grondilu Doesn't Mu derives from Any?
07:06 moritz no, the other way round
07:06 moritz r: say Any.^parents(:all).perl
07:06 p6eval rakudo 4373f0: OUTPUT«(Mu,)␤»
07:08 grondilu well, in rakudo the error message about our type constraint is kind of hard coded, so the signature doesn't really matter, I guess.
07:14 fhelmberger joined #perl6
07:23 havenn joined #perl6
07:25 tarch joined #perl6
07:32 grondilu joined #perl6
07:33 grondilu I've just realised I wrote something silly earlier.  Please ignore :)
07:41 fglock joined #perl6
07:44 kaleem joined #perl6
08:14 pomysl joined #perl6
08:14 * moritz blug: http://rakudo.org/2012/04/05/no-rakudo-star-​release-for-march-2012-stay-tuned-for-april/
08:14 vlixes left #perl6
08:16 iDzik moritz++
08:37 brrt does proto work on rakudo?
08:37 moritz brrt: no; we install our modules with panda these days
08:37 brrt ... not the proto i was refering to :-)
08:37 moritz oh
08:38 moritz an overloaded term
08:38 moritz rakudo does have proto subs and regexes
08:38 moritz (and methods)
08:38 moritz though the proto regexes are a bit limited, you can only re-dispatch to multis immediately
08:38 brrt r: { proto foo($); sub foo(Int $x) { say $x**2; }; sub foo(Str $x) { say $x.uc }; sub foo($x) { say $x.WHAT; } }
08:39 p6eval rakudo 4373f0: OUTPUT«===SORRY!===␤Missing block␤at /tmp/PIsHsuZR2E:1␤»
08:39 jnthn morning
08:39 moritz and you have to explicitly write 'multi sub' for now
08:39 moritz \o jnthn
08:39 brrt .. yeah, that s the part i was refering to :-)
08:40 moritz technically that's the smallest bit of the proto/multi implementationi
08:40 jnthn Ah, the auto-multi-ing when there's a proto in scope...yeah, that's NYI, though probably not that hard to do.
08:40 jnthn Well, one note though
08:40 jnthn multi foo() { }; sub foo() { }
08:40 jnthn This will auto-multi the second sub.
08:40 moritz the logic for handling routine declarations is just longish, because there so many cases to consider
08:41 brrt i see
08:41 jnthn Why? Because the first multi causes a proto to be generated. From that point there's a proto in scope.
08:41 jnthn I don't know the spec is clear on whether the above is OK.
08:41 jnthn Note the other way around (sub foo() { }; multi foo() { }) would always be an error.
08:42 brrt i see how it would work; but in that case just letting proto($) { ... } also generate a proto in scope would be sufficient
08:44 moritz erm, if you write a proto, there's no proto autogenerated
08:44 dalek star: 70d774d | moritz++ | / (2 files):
08:44 dalek star: add URI and LWP::Simple
08:44 dalek star: review: https://github.com/rakudo/star/commit/70d774dc5f
08:49 moritz jnthn: would it help you if I prototyped some code for module precompilation/caching in p{5,6}?
08:51 moritz stuff like where to look for precompiled modules, check if they are up-to-date, if not create a new compiled version etc.
08:54 fsergot joined #perl6
08:54 fsergot o/ :)
08:54 jnthn moritz: 6 is likely easier; I suspect we need to code to be in NQP in the end.
08:55 jnthn hi fsergot
08:55 iDzik hello fsergot
08:55 jnthn moritz: BUT we need to get versioned/auth'd modules back in place too
08:56 jnthn moritz: I guess that with a little care the two can be kept orthogonal though...
08:56 moritz jnthn: mostly, I think
08:57 moritz jnthn: do we have a facility to load a module without it affecting the rest of the program? (ie without global merging; some kind of sandbox loading)
08:57 moritz (low level facility, that is)
08:58 jnthn moritz: Yes, just don't pass a GLOBALish argument to load_module
08:59 jnthn (See src/Perl6/ModuleLoader.pm
08:59 jnthn )
08:59 jnthn moritz: Actually this is used by loading in pre-compilation
08:59 jnthn Because it just serializes its view of GLOBAL.
08:59 jnthn So the merge is done once at compilation time.
09:00 jnthn Of course, your script that does "use" has to then reconcile that GLOBAL with its own one when you use the pre-compiled module...but it saves some of the work :)
09:01 moritz I can imagine two possible approaches of cache management
09:02 moritz the first is to keep a separate meta data file, which stores things like which compiled module files corresponds to which module version, module timestamp, module sha1
09:03 moritz and the second is to put that meta data into the precompiled module itself, then "half-load" it, and see if it fits, possibly replacing it by a newly precompiled module
09:04 moritz that sounds more attractive to me, because it means the meta data is less likely to go out of sync
09:05 jnthn moment, work phone call...
09:05 moritz we just need an efficient mechanism to deserialize the interesting information without having to deserialize (and possibly discard) the whole module
09:05 moritz jnthn: no hurry, I'm still brainstorming :-)
09:05 dima joined #perl6
09:05 moritz or, more accurately, writing down what I've brainstormed earlier
09:11 masak good antenoon, #perl6
09:11 iDzik good prenoon masak
09:12 Teratogen joined #perl6
09:12 Teratogen what the
09:13 masak someone tell me: why do we have @=data, when there's $=data.lines ?
09:15 moritz because nobody has removed it yet
09:17 masak I was thinking maybe I had misundersttod the semantics of @=data.
09:17 masak misunderstood*
09:17 dalek specs: 1eb9da4 | moritz++ | S28-special-names.pod:
09:17 dalek specs: [S28] remove @=data, which is already available as $=data.lines
09:17 dalek specs:
09:17 dalek specs: masak++
09:17 dalek specs: review: https://github.com/perl6/specs/commit/1eb9da4fa8
09:17 masak having two variables, differing only in their sigils, serving up two different *views* of the same data, feels a bit like the "highlander variables" RFC.
09:18 masak moritz++ # ranting => action
09:18 moritz it's not quite noon yet, and I've already wielded the spec sledge hammer. Yay.
09:25 moritz timotimo: re http://irclog.perlgeek.de/​perl6/2012-04-04#i_5397162, junction invocations simply aren't optimized
09:26 moritz timotimo: and depending on the type information, some of those operators might be inlined. Currently there's no code that can inline jucntions, so all autothreading needs to invoke routines, which is costly
09:36 * masak lunch &
09:36 jnthn aye, also the auto-threader is dog slow
09:36 moritz that's what I meant with "junction invocations"; just very badly phrased :-)
09:37 jnthn moritz: The "half-load" thing will get weird if we actually load the PBC file
09:37 jnthn or .pir file
09:37 moritz jnthn: how so? because phasers fire?
09:38 jnthn moritz: Because load_bytecode automatically causes the deserialization and mainline running
09:38 moritz hm
09:38 jnthn moritz: So by then it's "too late"
09:38 moritz hm
09:39 jnthn There's always the option of keeping a file alongside the .pir or .pbc that supplies the "what's known"
09:39 jnthn Like, the sha1 of the source it came from
09:39 moritz I wonder if we can't serialize code with bs, write bytecode + serialization to a file the way want it, and have complete control over the loading procedure
09:40 moritz jnthn: right, that's probably the workaround to use
09:40 moritz it just would be a lot nicer to have it all in one file, to avoid race conditions, meta data getting out of date etc.
09:44 jnthn *nod*
09:58 PacoAir joined #perl6
10:36 agentzh joined #perl6
10:36 Araq joined #perl6
10:38 Araq left #perl6
10:41 NamelessTee joined #perl6
11:07 brrt this a question related to usage, i think it would make sense for bioperl6 to use standard range() objects, IO() objects etc to represent ranges and files and such
11:07 brrt what do you think?
11:10 iDzik of course
11:10 iDzik what's the alternative?
11:11 iDzik rolling your own ones I guess. Well, if the standard ones are not good enough for you I guess you could subclass and extend them, but I don't think that'd be necessary
11:12 brrt the alternative is rolling one's own
11:12 masak only roll your own if you need it.
11:12 brrt i'd think so
11:13 tadzik what will BioPerl ranges do that the standard ones do not?
11:13 brrt really good question
11:13 tadzik YAGNI, probably
11:13 brrt i'm going to check that out as we seapk
11:13 masak brrt: note that ranges are quite versatile. as long as an object does .succ and comparisons, you can make a range out of it.
11:14 masak r: .say for Date.new("2012-02-27") .. Date.new("2012-03-02")
11:14 p6eval rakudo 4373f0: OUTPUT«2012-02-27␤2012-02-28␤201​2-02-29␤2012-03-01␤2012-03-02␤»
11:14 brrt a range is a role, or a class, or an interface?
11:14 brrt perl6 is big
11:14 masak r: say (1..5).^name
11:14 p6eval rakudo 4373f0: OUTPUT«Range␤»
11:14 masak r: say (1..5).WHAT.^name
11:14 p6eval rakudo 4373f0: OUTPUT«Range␤»
11:14 masak hm.
11:14 masak r: say (1..5).HOW.^name
11:14 p6eval rakudo 4373f0: OUTPUT«Method 'dispatch:<.^>' not found for invocant of class 'Perl6::Metamodel::ClassHOW'␤  in block <anon> at /tmp/i8K0JKeScb:1␤␤»
11:14 masak r: say (1..5).HOW.WHAT
11:14 p6eval rakudo 4373f0: OUTPUT«Method 'gist' not found for invocant of class 'Perl6::Metamodel::ClassHOW'␤  in sub say at src/gen/CORE.setting:6249␤  in block <anon> at /tmp/Hk1Bv2N__c:1␤␤»
11:15 masak anyway... :)
11:15 brrt :-)
11:15 masak ClassHOW. so it's a class.
11:15 masak you can see how it's implemented in src/core in Rakudo.
11:15 brrt p6: say (1..5).WHAT
11:15 p6eval pugs: OUTPUT«Array␤»
11:15 p6eval ..rakudo 4373f0, niecza v15-6-gefda208: OUTPUT«Range()␤»
11:15 masak it's pure Perl 6 code.
11:16 brrt next thing, reading the source code is going to be a prefered way to learn perl6
11:16 masak here: http://github.com/rakudo/raku​do/blob/nom/src/core/Range.pm
11:16 brrt wait that might not be bad
11:16 masak absolutely. if you have time, read as much of src/core as you can.
11:17 havenn joined #perl6
11:17 masak it will only make your Perl 6 stronger.
11:17 * masak wishes he had more time for that :)
11:17 * brrt too
11:18 * tadzik wonders if Range should be parametrized
11:18 brrt oh, btw
11:18 brrt type coercion is done via the as statement now?
11:19 masak tadzik: I wish someone would just impose a (small, pragmatic) policy on container types and parametrization.
11:19 masak tadzik: for a long time, we've had Hash as a parametric role, but Array as just a class. (or something like that.) it just feels so arbitrary.
11:19 tadzik masak: an argument for: we optimize Range.roll if both ends are Int. We could have that variant of Role picked up at compile-time
11:19 masak brrt: type coercion is done like this: my Int(Cool) $coerced-to-int;
11:20 masak tadzik: ooh
11:20 masak r: say $Inf
11:20 p6eval rakudo 4373f0: OUTPUT«Inf␤»
11:20 tadzik that'd suck less. And we could be sure that both ends are the same type (if they should, but I think they should)
11:20 masak hm.
11:21 masak r: .say for 10.."20"
11:21 p6eval rakudo 4373f0: OUTPUT«10␤11␤12␤13␤14␤15␤16␤17␤18␤19␤20␤»
11:21 tadzik eek
11:21 masak I think that's kosher (and by spec).
11:21 masak (and Perlish)
11:21 havenn joined #perl6
11:21 brrt r: .say for 10.."foobar"
11:21 tadzik I think that's unsane :)
11:22 p6eval rakudo 4373f0: OUTPUT«(timeout)»
11:22 brrt oops
11:22 brrt it is unsane
11:22 tadzik as in: beyond sanity, and yet not insane :)
11:22 masak brrt: congrats, your first infinite loop :)
11:22 ingy joined #perl6
11:22 masak ingy! \o/
11:22 tadzik \o/
11:22 brrt \o/
11:23 brrt i was refering to this actually: multi method pick(Cool $n as Int) {
11:24 havenn joined #perl6
11:32 jnthn masak: Hash is a class in nom.
11:32 ingy joined #perl6
11:32 jnthn masak: So, no inconsistency there :)
11:33 colomon perl6: say 10.."foobar"
11:33 p6eval niecza v15-6-gefda208: OUTPUT«Unhandled exception: Cannot parse number: foobar␤  at /home/p6eval/niecza/lib/CORE.setting line 1366 (die @ 3) ␤  at /home/p6eval/niecza/lib/CORE.setting line 3405 (ANON @ 10) ␤  at /home/p6eval/niecza/lib/CORE.setting line 3407 (NumSyntax.str2num @ 4) ␤  a…
11:33 p6eval ..rakudo 4373f0: OUTPUT«10.."foobar"␤»
11:33 p6eval ..pugs: OUTPUT«␤»
11:33 colomon perl6: say 10..0
11:33 p6eval rakudo 4373f0, niecza v15-6-gefda208: OUTPUT«10..0␤»
11:33 p6eval ..pugs: OUTPUT«␤»
11:35 shachaf joined #perl6
11:39 sirhc joined #perl6
11:39 sirhc joined #perl6
11:41 masak jnthn: oh, phew.
11:41 masak I must've been thinking of ng/b or something, then.
11:41 benabik joined #perl6
11:42 jnthn Maybe ng
11:42 moritz r: say Hash.HOW
11:42 p6eval rakudo 4373f0: OUTPUT«Method 'gist' not found for invocant of class 'Perl6::Metamodel::ClassHOW'␤  in sub say at src/gen/CORE.setting:6249␤  in block <anon> at /tmp/NWd1oquZgm:1␤␤»
11:42 masak b: say Hash.HOW
11:42 p6eval b 922500:  ( no output )
11:42 masak oh, b.
11:42 masak how I don't miss you.
11:42 jnthn :)
11:42 moritz b: pir::say(pir::typeof__SP(Hash.HOW))
11:42 p6eval b 922500: OUTPUT«RoleHOW␤»
11:43 masak moritz++
11:43 benabik jnthn: load_bytecode__PS returns a PackfileView you can manipulate instead of having it automatically fire :init and :mian
11:43 benabik fire :init and return :main I suppose
11:43 jnthn benabik: Well, it's :load it fires in this case, not :init and :main
11:44 jnthn benabik: But good to know, thanks.
11:44 benabik jnthn: whiteknight's been trying to make loading bytecode more sane for more or less exactly that reason.  :-D
11:47 dalek nqp: 55fe6c6 | moritz++ | tools/build/PARROT_REVISION:
11:47 dalek nqp: bump parrot revision to get MacOS build fixes
11:47 dalek nqp: review: https://github.com/perl6/nqp/commit/55fe6c66d6
11:48 dalek rakudo/nom: 2bf52d5 | moritz++ | tools/build/NQP_REVISION:
11:48 dalek rakudo/nom: bump NQP revision
11:48 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/2bf52d52e6
11:51 arnsholt moritz: Rakudo built fine, but I get an error in make test
11:52 arnsholt It tries to run t/02-embed, but that doesn't actually exist
11:52 moritz arnsholt: ah, might need a Makefile update
11:52 arnsholt Yeah, it certainly looks like it
11:54 arnsholt (Spectesting now, but I don't imagine that'll turn up anything)
11:58 jnthn d'oh, I missed the Makefile reference when I removed that file.
11:59 moritz no worry, I can fix it
11:59 havenn joined #perl6
11:59 jnthn Thanks :)
12:00 * jnthn is currently catching up with $dayjob stuff
12:00 dalek rakudo/nom: e047fb4 | moritz++ | tools/build/Makefile.in:
12:00 dalek rakudo/nom: t/02-embed is gone
12:00 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e047fb4ed9
12:04 xinming joined #perl6
12:04 da2ce7 joined #perl6
12:13 havenn joined #perl6
12:14 dalek rakudo/nom: be058f9 | (Carl Mäsak)++ | src/core/Range.pm:
12:14 dalek rakudo/nom: [src/core/Range.pm] removed stale comment
12:14 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/be058f9ae3
12:16 moritz p6: say (1..*-1).WHAT
12:17 p6eval pugs: OUTPUT«(timeout)»
12:17 p6eval ..rakudo 4373f0: OUTPUT«WhateverCode()␤»
12:17 p6eval ..niecza v15-6-gefda208: OUTPUT«Unhandled exception: Cannot use value like WhateverCode as a number␤  at <unknown> line 0 (ExitRunloop @ 0) ␤  at /home/p6eval/niecza/lib/CORE.setting line 260 (Any.Numeric @ 5) ␤  at <unknown> line 0 (ExitRunloop @ 0) ␤  at /home/p6eval/niecza/lib/CORE.set…
12:17 moritz n: say <a b c d e f>[1..*-1]
12:17 p6eval niecza v15-6-gefda208: OUTPUT«Unhandled exception: Cannot use value like WhateverCode as a number␤  at <unknown> line 0 (ExitRunloop @ 0) ␤  at /home/p6eval/niecza/lib/CORE.setting line 260 (Any.Numeric @ 5) ␤  at <unknown> line 0 (ExitRunloop @ 0) ␤  at /home/p6eval/niecza/lib/CORE.set…
12:17 jnthn r: say <a b c d e f>[1..*-1]
12:17 p6eval rakudo 4373f0: OUTPUT«b c d e f␤»
12:17 jnthn nice :)
12:18 Teratogen p6: say 1..Inf;
12:18 Teratogen muahahaha
12:18 Teratogen MUAHAHAHA
12:18 p6eval pugs: OUTPUT«Stack space overflow: current size 8388608 bytes.␤Use `+RTS -Ksize -RTS' to increase it.␤»
12:18 p6eval ..rakudo 4373f0, niecza v15-6-gefda208: OUTPUT«1..Inf␤»
12:18 Teratogen yowch!
12:18 Teratogen it slurped all of memory!
12:18 moritz somehow I still feel that it's weird that 1..* and 1..*-1 return the same thing when used in a subscript
12:19 tadzik yeah
12:19 jnthn Teratogen: Mature... Also, I suspect the box has more than 8MB of RAM. :P
12:19 moritz though not much more :-)
12:22 Teratogen p6: fork while fork;
12:22 p6eval pugs: OUTPUT«*** Unsafe function 'fork' called under safe mode␤    at /tmp/ZQrSnfRP5k line 1, column 12-16␤»
12:22 p6eval ..rakudo 4373f0: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&fork' called (lines 1, 1)␤»
12:22 p6eval ..niecza v15-6-gefda208: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤â�¤Undeclared routine:â�¤      'fork' used at line 1,1â�¤â�¤Unhandled exception: Check failedâ�¤â�¤  at /home/p6eval/niecza/boot/lib/CORE.setting line 1362 (die @ 3) â�¤  at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 33) â�¤  at /ho…
12:22 Teratogen what the
12:22 Teratogen fork bomb doesn't work? =(
12:22 tadzik how suprising
12:22 masak Teratogen: please don't do this.
12:22 Teratogen morning masak!
12:23 masak Teratogen: we like you, and we know you get bored sometimes.
12:23 masak but no-one likes a fork bomb, whether it works or not.
12:23 masak you can do better.
12:23 Teratogen ok =(
12:23 tokuhirom joined #perl6
12:24 bbkr hint: you can fork-bomb using NativeCall
12:25 moritz BSD::Resource++
12:28 moritz p6: say $*IN.slurp.comb(/e/).elems
12:28 p6eval rakudo 4373f0, niecza v15-6-gefda208: OUTPUT«88␤»
12:28 p6eval ..pugs: OUTPUT«*** Unsafe function 'slurp' called under safe mode␤    at /tmp/pB9mrJkpiH line 1, column 5 - line 2, column 1␤»
12:36 masak r: say slurp.comb(/e/).elems
12:36 p6eval rakudo 4373f0: OUTPUT«===SORRY!===␤CHECK FAILED:␤Calling 'slurp' will never work with no arguments (line 1)␤    Expected any of:␤    :(Any $filename)␤»
12:36 masak how come lines() defaults to $*IN, but slurp() doesn't?
12:37 moritz not $*IN, $*ARGS
12:37 moritz ... and I don't know
12:38 masak they feel somehow analogous.
12:38 moritz agreed
12:39 * masak patches the spec
12:39 moritz r: slurp($*ARGS).comb(/e/).elems.say
12:39 p6eval rakudo 4373f0: OUTPUT«Dynamic variable $*ARGS not found␤  in method Str at src/gen/CORE.setting:8203␤  in method Stringy at src/gen/CORE.setting:674␤  in sub infix:<eq> at src/gen/CORE.setting:973␤  in method open at src/gen/CORE.setting:6279␤  in sub open at src/gen/CORE.setting:6467␤ …
12:39 moritz r: slurp($*ARGFILES).comb(/e/).elems.say
12:39 p6eval rakudo 4373f0: OUTPUT«This type cannot unbox to a native string␤  in method open at src/gen/CORE.setting:6281␤  in sub open at src/gen/CORE.setting:6467␤  in sub slurp at src/gen/CORE.setting:6492␤  in block <anon> at /tmp/H8ifO_Lrax:1␤␤»
12:40 masak moritz: $*ARGFILES, according to S32/IO
12:41 masak oh, and S32/IO already has it that way. it's just that Rakudo doesn't implement it.
12:41 masak n: say slurp.comb(/e/).elems
12:41 p6eval niecza v15-6-gefda208: OUTPUT«Unhandled exception: slurp may not be used in safe mode␤  at /home/p6eval/niecza/lib/CORE.setting line 0 (slurp @ 0) ␤  at /tmp/idnDI0DwYM line 1 (mainline @ 2) ␤  at /home/p6eval/niecza/lib/CORE.setting line 3842 (ANON @ 3) ␤  at /home/p6eval/niecza/lib/CO…
12:41 pernatiy joined #perl6
12:43 * masak submits rakudo todo-ticket
12:43 moritz masak: now spectesting a fix
12:44 masak moritz++
12:46 masak https://rt.perl.org/rt3//Publ​ic/Bug/Display.html?id=112276
12:46 havenn joined #perl6
12:52 havenn joined #perl6
12:54 havenn joined #perl6
12:55 [Coke] p: say "   asdf   ".trim
12:55 p6eval pugs: OUTPUT«*** No such method in class Str: "&trim"␤    at /tmp/CMXZ2N1hj5 line 1, column 5 - line 2, column 1␤»
12:58 masak another LHF.
13:01 sftp joined #perl6
13:01 xinming_ joined #perl6
13:05 mtk joined #perl6
13:06 [particle] joined #perl6
13:14 thou joined #perl6
13:24 pernatiy joined #perl6
13:35 spider-mario joined #perl6
13:38 avar joined #perl6
13:50 Juerd joined #perl6
14:31 Trashlord joined #perl6
14:39 jnthn I saw moritz++ has been eating well into the testneeded queue so I just did a little RT hunting and it's back up to 81. :) Also resolved a couple.
14:39 kaare_ joined #perl6
14:39 moritz (: :)
14:41 masak jnthn++
14:45 jnthn hah, found some more :)
14:46 jnthn Well, testneeded could also be a way in for any folks at le hackathon who fancy getting into contributing to the test suite.
14:46 colomon +1
14:46 colomon or perhaps jnthn++
14:46 colomon both?
14:47 moritz not only to the test suite
14:47 masak to human progress.
14:48 moritz the way to close bugs about LTA errors is to introduce an exception type for the more awesome error, and throw it
14:48 moritz and then it's quite easy to test for
14:48 amkrankruleuen joined #perl6
14:48 moritz and introducing a new exception type is quite easy right now
14:48 jnthn Also that :)
14:48 jnthn Well, there's my little bit of test suite wrangling. :)
14:48 jnthn er
14:49 jnthn s/test sutie/ticket queueue/
14:49 jnthn *suite
14:52 alester joined #perl6
14:54 moritz r: my class X::Syntax::Extension::Category does X::Syntax { has $.category }
14:54 p6eval rakudo 4373f0:  ( no output )
14:54 moritz oh, syntax error shadowed by something else
14:54 SHODAN joined #perl6
14:58 [Coke] p: given 1 { when 1 { say "EEK!" } }
14:58 p6eval pugs: OUTPUT«EEK!␤»
15:00 fsergot joined #perl6
15:00 havenn joined #perl6
15:01 dalek rakudo/nom: 8dada65 | masak++ | src/core/Range.pm:
15:01 dalek rakudo/nom: [src/core/Range.pm] remove method
15:01 dalek rakudo/nom:
15:01 dalek rakudo/nom: It had no spectest coverage, and I don't much agree with its
15:01 dalek rakudo/nom: semantics.
15:01 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/8dada65dfb
15:01 dalek rakudo/nom: 34ac9bf | masak++ | src/core/Routine.pm:
15:01 dalek rakudo/nom: [src/core/Routine.pm] add a clarifying comment
15:01 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/34ac9bf5d4
15:03 masak re Range ~~ Range. there are two streams of thought there.
15:03 masak either we see such a smartmatch as an extension of List semantics. then the method I just removed makes sense. we're comparing two distinct lists and they have to be the same.
15:03 moritz fwiw S32-exceptions/misc.t relies on the current Range ~~ Range semantics
15:04 moritz (or old semantics?)
15:04 masak huh -- I got a PASS on the spectests.
15:04 masak well, feel free to revert if that's the case.
15:04 moritz it's a false positive right now
15:04 havenn joined #perl6
15:04 moritz the test is basically $somexception.range ~~ 0..0
15:04 jnthn S03 says nothing of the behavior that masak just removed.
15:05 moritz now it passes because $somexception.range numifies to 0
15:05 jnthn Presumably === or eqv could be used instead of smartmatching for this.
15:05 masak the other interpretation is that smartmatch is an extension of scalar semantics. i.e. a range would smartmatch on a wider range, just like a scalar smartmatches on a range it's a part of.
15:05 masak I like this way better.
15:05 moritz but 1..1 would also numify to 0, and would be a false positive
15:05 masak the behavior is harder to reproduce in some other way.
15:05 masak and it feels more like, say, smartmatching signatures.
15:05 * masak decommutes
15:06 moritz masak: the proper approach is the replace the old implementation by an implementation of the new feature, not just delete it
15:08 dalek nqp: aabbd0a | jnthn++ | src/6model/reprs/NativeCall.c:
15:08 dalek nqp: Fix pre-compilation of modules that use NativeCall.
15:08 dalek nqp: review: https://github.com/perl6/nqp/commit/aabbd0afbe
15:08 dalek rakudo/nom: c62b90d | moritz++ | src/core/Exception.pm:
15:08 dalek rakudo/nom: throw typed exception for syntax extensions to illegal categories (RT #82984)
15:08 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c62b90dac2
15:09 dalek roast: fd201d9 | moritz++ | S32-exceptions/misc.t:
15:09 dalek roast: RT #82984
15:09 dalek roast: review: https://github.com/perl6/roast/commit/fd201d9aaf
15:10 dalek nqp: f3ec4c5 | jnthn++ | docs/serialization_format.markdown:
15:10 dalek nqp: Add some serialization format docs.
15:10 dalek nqp: review: https://github.com/perl6/nqp/commit/f3ec4c59bb
15:10 kaleem joined #perl6
15:22 birdwind1pbird joined #perl6
15:29 [Coke] for each(("T", "E", 5) ; (10, 11, 5)) -> $digit, $expected {
15:29 [Coke] (that's 3 loop iterations, aye?)
15:33 dalek roast: 2ac8afb | moritz++ | S14-roles/mixin.t:
15:33 dalek roast: RT #79866, mixing a postcircumfix:<( )> into an Int
15:33 dalek roast: review: https://github.com/perl6/roast/commit/2ac8afbfba
15:34 brrt p6: for each("T", "E", 5 ; (10, 11, 5)) -> $digit, $exptected { say $digit, $expected; }
15:34 p6eval niecza v15-6-gefda208: OUTPUT«[31m===[0mSORRY![31m===[0m��Slicel lists are NYI at /tmp/DWtMljyc68 line 1:�------> [32mfor each("T", "E", 5 ; (10, 11, 5))[33m�[31m -> $digit, $exptected { say $digit, $ex[0m��Variable $expected is not predeclared at /tmp/DWtMljyc68 line 1:�------>…
15:34 p6eval ..pugs: OUTPUT«*** ␤    Unexpected ";"␤    expecting "::"␤    Variable "$expected" requires predeclaration or explicit package name␤    at /tmp/CyDs4B0QLx line 1, column 82␤»
15:34 p6eval ..rakudo 4373f0: OUTPUT«===SORRY!===␤Variable $expected is not declared␤at /tmp/T25DDeLLkH:1␤»
15:34 moritz [Coke]: erm, if you s/each/zip/ it might work that way
15:35 [Coke] moritz: that's from a test in S04-statements/given.t
15:35 [Coke] brrt: typo.
15:36 [Coke] moritz: the test says it's # from apocalypse 4, and niecza & rakudo both skip itl
15:36 [Coke] but I think it's screwing up the number of tests.
15:37 TimToady looks to be something from before we had Z
15:39 moritz [Coke]: feel fre to remove it
15:39 moritz *free
15:39 brrt for each("T", "E", 5 ; (10, 11, 5)) -> $digit, $expected { say $digit, $expected; }
15:39 TimToady it's also unrelated to the current conjectured each() at S09:1067
15:40 TimToady *currently
15:40 brrt p6: for each("T", "E", 5 ; (10, 11, 5)) -> $digit, $expected { say $digit, $expected; }
15:40 p6eval rakudo 4373f0: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&each' called (line 1)␤»
15:40 p6eval ..niecza v15-6-gefda208: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤â�¤Slicel lists are NYI at /tmp/0ibN0u8MaI line 1:â�¤------> [32mfor each("T", "E", 5 ; (10, 11, 5))[33mâ��[31m -> $digit, $expected { say $digit, $exp[0mâ�¤â�¤Undeclared routine:â�¤     'each' used at line 1â�¤â�¤Unhandled exception: Check f…
15:40 p6eval ..pugs: OUTPUT«TE␤510␤»
15:40 brrt for zip("T", "E", 5 ; (10, 11, 5)) -> $digit, $expected { say $digit, $expected; }
15:41 moritz p6: for zip("T", "E", 5 ; (10, 11, 5)) -> $digit, $expected { say $digit, $expected; }
15:41 p6eval rakudo 4373f0: OUTPUT«T10␤E11␤55␤»
15:41 p6eval ..pugs: OUTPUT«TE510␤»
15:41 p6eval ..niecza v15-6-gefda208: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤â�¤Slicel lists are NYI at /tmp/buDlnFgGO0 line 1:â�¤------> [32mfor zip("T", "E", 5 ; (10, 11, 5))[33mâ��[31m -> $digit, $expected { say $digit, $exp[0mâ�¤â�¤Undeclared routine:â�¤      'zip' used at line 1â�¤â�¤Unhandled exception: Check fai…
15:41 moritz rakudo++
15:42 dalek roast: 33dfaa3 | moritz++ | S14-roles/mixin.t:
15:42 dalek roast: RT #79868, mixing into a type object
15:42 dalek roast: review: https://github.com/perl6/roast/commit/33dfaa32f2
15:43 [Coke] niecza just exploded on me with: Unhandled exception: System.Exception: Unhandled nam operator command_qx
15:43 [Coke] (when trying to run that test file.)
15:43 moritz I thought qx was implemented :/
15:45 dalek roast: d0c47d3 | coke++ | S04-statements/given.t:
15:45 dalek roast: remove crufty test
15:45 dalek roast: (predates Z?)
15:45 dalek roast: review: https://github.com/perl6/roast/commit/d0c47d383d
15:47 Psyche^ joined #perl6
15:48 dalek roast: cc341e3 | moritz++ | S06-signature/arity.t:
15:48 dalek roast: RT #111646, slurpies => infinite .count
15:48 dalek roast: review: https://github.com/perl6/roast/commit/cc341e385f
15:49 moritz r: class A { sub f { has $.x } }; say A.new(x => 42).x
15:49 p6eval rakudo 4373f0: OUTPUT«42␤»
15:50 moritz is that how it should be?
15:50 moritz std: class A { sub f { has $.x } }; say A.new(x => 42).x
15:50 p6eval std 1ad3292: OUTPUT«ok 00:00 42m␤»
15:50 moritz std: has $.x
15:50 p6eval std 1ad3292: OUTPUT«Potential difficulties:â�¤  'has' declaration outside of class at /tmp/lAfyKweRHw line 1:â�¤------> [32mhas[33mâ��[31m $.x[0mâ�¤ok 00:00 41mâ�¤Â»
15:51 moritz p6: class A { sub f { has $.x } }; say A.new(x => 42).x
15:51 p6eval pugs, rakudo 4373f0: OUTPUT«42␤»
15:51 p6eval ..niecza v15-6-gefda208: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤â�¤Attribute $!x declared outside of any class at /tmp/w5b7OgIfyn line 1:â�¤------> [32mclass A { sub f { has $.x [33mâ��[31m} }; say A.new(x => 42).x[0mâ�¤â�¤Potential difficulties:â�¤  &f is declared but not used at /tmp/w5b7OgIfyn …
15:52 arnsholt I get two failures in dash-e.t in my newly refunctional Rakudo
15:52 moritz arnsholt: what's your locale?
15:52 arnsholt One seems to be a Unicode issue, the other I'm not sure about
15:52 arnsholt Good point
15:53 arnsholt It's undefined, so C is the default, no?
15:53 moritz yes
15:53 moritz and i guess it goes away when you switch to an UTF-8 locale
15:53 arnsholt LC_CTYPE is UTF-8, though
15:54 moritz but that only affects collecations
15:54 moritz (ie sorting)
15:55 moritz try LANG=en_US.UTF-8 ./perl6 t/spec/S19-command-line/dash-e.t
15:55 arnsholt Cheers! I was about to ask about the syntax of that
15:56 moritz ah, if I set LC_ALL=C, I get two test failures too
15:56 arnsholt Doesn't work though =/
15:56 moritz is that locale available?
15:56 * TimToady can imagine a programming style in which 'has' can be used inside functions under the closure/object duality, but obviously that's not what rakudo or pugs are doing here
15:56 moritz TimToady: so you rather side with niecza?
15:57 TimToady in the absence of a use case for the rakudo behavior, I'd tend to be conservative and outlaw it for now
15:57 moritz +1
15:57 TimToady seems like a matter of setting the appropriate contextual somewhere
15:58 arnsholt moritz: locale -a says it's there, but doesn't work
15:58 arnsholt But no matter
15:58 arnsholt It's an issue with my local setup, not Rakudo
15:59 * jnthn blug: http://6guts.wordpress.com/2012/04/05/b​ack-from-vacation-hackathon-coming-up/
15:59 jnthn TimToady: The Rakudo behavior is simply because $*PACKAGE, the current meta-object, is contextual.
16:00 jnthn TimToady: It's the obvious way to implement it, and it'd be a small pain to disallow.
16:00 moritz well, I guess it should look at $*HAS_SELF instead
16:00 moritz r: has $*x
16:00 p6eval rakudo 4373f0: OUTPUT«===SORRY!===␤You cannot declare an attribute here; maybe you'd like a class or a role?␤at /tmp/8kRvJ6Ou9s:1␤»
16:00 brrt p6: sub foo(Int *@a) { say @a; } foo(1, 3, 9);
16:00 p6eval rakudo 4373f0: OUTPUT«===SORRY!===␤Confused␤at /tmp/4cSW6ITb1r:1␤»
16:00 p6eval ..pugs: OUTPUT«139␤»
16:00 p6eval ..niecza v15-6-gefda208: OUTPUT«[31m===[0mSORRY![31m===[0m��Strange text after block (missing comma, semicolon, comment marker?) at /tmp/8FD5nGygLy line 1:�------> [32msub foo(Int *@a) { say @a; }[33m�[31m foo(1, 3, 9);[0m��Parse failed��»
16:01 brrt p6: sub foo(Int *@a) { say [*] @a; }; foo(1, 3, 9);
16:01 p6eval rakudo 4373f0: OUTPUT«Nominal type check failed for parameter '@a'; expected Positional but got Array instead␤  in sub foo at /tmp/yyDp324EIg:1␤  in block <anon> at /tmp/yyDp324EIg:1␤␤»
16:01 p6eval ..pugs, niecza v15-6-gefda208: OUTPUT«27␤»
16:01 brrt what rakudo says
16:02 TimToady that's...bizarre...
16:02 moritz the error message, yes
16:02 jnthn Somehow the Rakudo error misses the fact that it expects Positional[Int] but got an untyped array.
16:03 moritz the actual error... the spec is very silent on that matter, iirc
16:03 jnthn So, crappy error, but unsurprising semantics...perhaps types in slurpy arrays make no sense though
16:04 TimToady or we could do what the user expects/deserves, which is to slow down their code by doing the run-time check
16:05 brrt cool... anyway, i have to go now
16:05 moritz does that mean eagerly reifying the slurpy?
16:05 moritz or check-as-we-reify?
16:06 TimToady or check the return type of everything in the parcel, if we know it
16:06 brrt left #perl6
16:07 TimToady (at compile time, I mean)
16:07 jnthn Check as we reify could be some fun action at a distance...but I guess that goes for typed arrays anyway
16:07 moritz TimToady: but that only covers only this specific case
16:07 TimToady it covers anything that --> Int
16:08 TimToady yes, this is a slippery slope :)
16:09 jnthn .oO( which is why Perl 6 must go out jogging on it! )
16:09 TimToady and problematic in a multi sig that is using Int to differentiate something
16:09 dalek roast: 1c332ba | coke++ | S04-statements/given.t:
16:09 dalek roast: pugs fudge
16:09 dalek roast: review: https://github.com/perl6/roast/commit/1c332baf42
16:09 moritz and problematic for    (1, 2.4, 3e4) # do we figure it out's Parcel[Real]?
16:09 dalek Pugs.hs/so: d38cf19 | coke++ | t/spectest.data:
16:09 dalek Pugs.hs/so: run (fudged) test
16:09 dalek Pugs.hs/so: review: https://github.com/perl6/Pugs.hs/commit/d38cf19d77
16:11 sorear good * #perl6
16:11 masak sorear! \o/
16:11 TimToady moritz: maybe that's the right thing to do, and will give the bestest error messages on failure
16:11 jnthn OK, dinner time...bbl o/
16:12 sorear masak!
16:12 masak moritz: sorry -- I saw the method as affecting none of the spectests, having no mention in the spec, and being against my Least Surprise. I figured I could spec/wite spectest/implement as a second step, after discussing it here.
16:14 TimToady but it does drive things more toward generics solutions in order to get things like List[Int]
16:14 masak &
16:14 TimToady and things like .map: {.Int} don't really know that they're --> List[Int] currently
16:15 sudokode joined #perl6
16:16 TimToady unless we do a lot more type inferencing...
16:16 TimToady in which case they still don't do it currently :P
16:18 simcop2387 joined #perl6
16:19 fglock_ joined #perl6
16:19 TimToady and then there's Int(Cool) *slurpy
16:20 TimToady which probably needs to run at reification time anyway
16:20 Juerd [Coke]: Your pugs instance on feather1 is using too much memory. Could you look into that?
16:20 Juerd [Coke]: I've killed the worst one by the way; had to.
16:20 masak hah! just as I thought, TheDamian replied to lichtkind with $answer ~~ Awesome ;)
16:20 Juerd masak: Where?
16:21 masak p6l.
16:21 * masak afk, really this time
16:25 [Coke] Juerd: every day at this time there is a spectest run.
16:25 TimToady so I think the dwimmiest answer on typed slurpies is that we plan to check/coerce type at reify time but optimize it away when we statically know better, and hope that we know better better over time
16:25 sorear std ;
16:25 sorear std: ;
16:25 p6eval std 1ad3292: OUTPUT«ok 00:00 40m␤»
16:25 [Coke] it's possible someone added a new test that pugs doesn't handle well.
16:25 Juerd [Coke]: I see
16:25 [Coke] (I thought it was limited. checking.) c
16:25 Juerd Haven't noticed issues like today's before.
16:25 [Coke] (crap, I committed spectest changes to the wrong branch.)
16:26 sorear moritz: ping
16:26 Juerd Load was at 18 when I decided to kill it
16:26 Juerd It had reached 20 by the time I could actually run top :)
16:27 TimToady sorear: if you haven't seen it, http://irclog.perlgeek.de/​perl6/2012-04-05#i_5397853
16:27 TimToady but maybe that's why you're pinging him...
16:28 [Coke] Juerd: hurm. looks like that copy of pugs is not running with limited resources. I'll try to get that all fixed up before tomorrow's run, sorry.
16:28 sorear TimToady: I was under the impression that moritz meant "evalbot rebuild $foo does not work"
16:28 sorear but apparently neither do timed rebuilds
16:29 sorear y'know, I have good feather{1,3} accts, I could check myself
16:29 Juerd [Coke]: It's okay. That's what we have feather for :)
16:29 [Coke] MLEHMANN--
16:29 Juerd What now?
16:29 Juerd Does he do P6 stuff?
16:33 arnsholt moritz: Was it you who had gotten Zavolaj working on OS X?
16:35 sorear hmm
16:35 sorear no crontabs on feather1 for this
16:35 sorear maybe it's triggered from 3?
16:36 Juerd Have you checked user crontabs as well?
16:36 sorear yes
16:36 sorear all of them
16:36 fgomez joined #perl6
16:36 fgomez joined #perl6
16:36 sorear sudo + "There is no privacy" = :>
16:36 Juerd Yea. I should still migrate my IRC away from feather
16:37 Juerd Can't have a decent private conversation, in theory. In practice though I tend to trust you guys :)
16:38 TimToady it's the people spying on us that you can't trust :)
16:38 Juerd If only we know who they were.
16:38 TimToady after all, Open Source is next door to anarchy :)
16:38 Juerd knew, are? English is hard.
16:38 sjohnson feather eh...
16:39 Juerd TimToady: Anarchy, atheism and epidemics.
16:39 TimToady I'd probably use knew/were there
16:39 sorear /usr/local/bin/incredibly_u​gly_hack_to_restart_apache :D
16:39 TimToady but knew/are is fine
16:40 Juerd Oh, that's still in place? :)
16:40 sorear ya in /etc/crontab on f1
16:40 sorear feather0 = dom0?
16:41 Juerd Yes. But feather0 no longer exists.
16:41 TimToady an incredibly ugly hack would be to restart apache by deinstalling/reinstalling it
16:41 sorear another crontab /etc/fossil
16:41 Juerd feather[123] were migrated to our shared virtual server platform.
16:41 Juerd There's no dedicated feather hardware anymore.
16:42 Juerd TimToady: That's actually possible without killing the process...
16:42 TimToady Juerd: nothing a reboot or two won't fix
16:43 Juerd echo '* */3 * * * root reboot' >> /etc/crontab
16:43 Juerd Hm, no, that'd be a really stupid crontab.
16:43 Juerd echo '0 */3 * * * root reboot' >> /etc/crontab
16:44 geekosaur was gonna say, reboot once a minute is not so helpful
16:44 Juerd geekosaur: The first one is because it's needed. The other 59 are just to make sure.
16:44 [particle]1 joined #perl6
16:45 TimToady the important question is whether it actually gets around to restarting apache in the first minute :)
16:45 Juerd Probably. Virtual servers boot up very fast.
16:45 TimToady since that's the whole point of this :)
16:45 geekosaur ("apachectl graceful" not good enough?)
16:46 Juerd No BIOS, no boot loader with all kinds of bootstrapping hacks, and full disk caching available even before loading the initrd.
16:46 TimToady .oO(evalbot reboot)
16:46 colomon joined #perl6
16:46 Juerd geekosaur: No, back when this probablem existed, sometimes a kill -9 was needed.
16:46 geekosaur of course if ti won't go gracefully, apachectl stop / start
16:46 Juerd probablem? Problem.
16:46 sorear I cannot find any evidence of an automated rebuild system utilizing feather1
16:46 sorear I'm going to hold off until moritz++ is available
16:47 colomon sorear!  \o/
16:47 sorear [Coke]: what did mlehmann do to you today>
16:47 Juerd Hm, why would anyone hide something like that?
16:47 sorear colomon!
16:47 sorear colomon: how was ambercon?
16:47 sorear colomon: \o/
16:47 TimToady and did you do any shadow-walking?
16:47 sjohnson three cheers !
16:48 colomon sorear: ambercon was terrific.  also somewhat exhausting.
16:49 TimToady walking will do that
16:50 colomon TimToady: crazily enough, no shadow-walking this year for me.  there was some sort of dimensional nexus thing in one game, but we never went anywhere other than our Earth from it.  My players found a shadow map in one of  the games I read, but they didn't actually use it yet.
16:50 * TimToady is merely assuming that ambercon is a zelazny riff
16:51 colomon TimToady's assumption is very, very solid
16:51 colomon s/read/ran/
16:53 colomon I only was involved in two games that had an actual Amber setting this year.  (Played or ran a total of eight games.)
16:55 fgomez joined #perl6
17:01 [Coke] sorear: he was very grumpy on/about rt.cpan.org
17:06 gabriel_ joined #perl6
17:06 gabriel_ left #perl6
17:06 gabriel1406 joined #perl6
17:08 gabriel1406 joined #perl6
17:10 sorear [Coke]: ah, he's always been like that
17:17 dalek specs: f0f29e7 | larry++ | S03-operators.pod:
17:17 dalek specs: define smartmatch between two ranges
17:17 dalek specs:
17:17 dalek specs: masak++ is correct that this is difficult to write any other way.
17:17 dalek specs: review: https://github.com/perl6/specs/commit/f0f29e7bd3
17:19 sorear but does it have any() or all() semantics?
17:20 TimToady a Range is not a list
17:20 TimToady but it's all on the bounds, modulo ^ constraints
17:21 sorear how would you test if two ranges have nonempty intersectio?
17:22 spider-mario regarding AST objects,
17:22 spider-mario how can they be manipulated?
17:23 spider-mario they have methods: BUILD, incarnate and is_quasi_ast
17:23 spider-mario but I don’t know what they do
17:23 TimToady p6: my $a = 1..3; my $b = 2..4; say $a.bounds.one ~~ $b  # first approx
17:23 p6eval pugs: OUTPUT«*** No such method in class Array: "&bounds"␤    at /tmp/PAze4NLHDe line 1, column 33 - line 2, column 1␤»
17:23 p6eval ..niecza v15-6-gefda208: OUTPUT«one(Bool::False, Bool::True)␤»
17:23 p6eval ..rakudo 4373f0: OUTPUT«one(True, True)␤»
17:23 TimToady p6: my $a = 1..3; my $b = 2..4; say so $a.bounds.one ~~ $b  # first approx
17:23 p6eval rakudo 4373f0: OUTPUT«False␤»
17:23 p6eval ..pugs: OUTPUT«*** No such subroutine: "&so"␤    at /tmp/kmxmnQNfAm line 1, column 33 - line 2, column 1␤»
17:23 p6eval ..niecza v15-6-gefda208: OUTPUT«True␤»
17:24 Timbus joined #perl6
17:27 * [Coke] wonders how many people hacking on perl6 things had web in HS. (Not I)
17:27 havenn joined #perl6
17:28 [Coke] (someone elsewhere just reminded me how old I am. ;)
17:28 TimToady real solution is probably more on the order of $c = $a minmax $b; $a !=== $c !=== $b and ($b.min ~~ $a or $a.max ~~ $b) # or some such
17:29 spider-mario p6: Buf.new ~~ IO::Readable
17:29 p6eval pugs: OUTPUT«*** No such subroutine: "&Buf"␤    at /tmp/NbIwJjyT65 line 1, column 1 - line 2, column 1␤»
17:29 p6eval ..rakudo 4373f0: OUTPUT«Could not find symbol 'IO::&Readable'␤  in block <anon> at /tmp/KViCZ3eVpu:1␤␤»
17:29 p6eval ..niecza v15-6-gefda208: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤â�¤Undeclared name:â�¤ 'Buf' used at line 1â�¤â�¤Unhandled exception: Check failedâ�¤â�¤  at /home/p6eval/niecza/boot/lib/CORE.setting line 1362 (die @ 3) â�¤  at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 33) â�¤  at /home/p6e…
17:30 spider-mario that’s not how we test roles.
17:30 TimToady maybe we need a maxmin infix that returns the intersection of two ranges, or Nil
17:30 TimToady or just define the setops on Ranges :)
17:31 xenu joined #perl6
17:32 TimToady and $a ∩ $b would return an empty range or set if there was no overlap
17:33 TimToady sets of Reals, yum
17:35 TimToady not clear what kind of beastie $a ∪ $b returns though, if there's no overlap. set($a,$b) is a bit "problemantic"
17:36 TimToady should .elems return 2, or Inf, or the number of (unique?) integers generated by iterating $a and then $b
17:37 TimToady I'm inclined to think that sets of reals should always have Inf members, unless empty
17:38 TimToady well, some alephish kind of Inf
17:39 TimToady I rather suspect that all transcendentals look like Inf to p6 for now
17:41 TimToady er, s/transcendental/"ordinals"/
17:42 * TimToady is in over his head, as usual
17:42 TimToady I think I meant "transfinites"
17:43 sorear TimToady: .one ~~ won't work, consider (1, 100) \intersect (10, 20)
17:44 sorear Infinite cardinals.
17:44 TimToady indeed, which is why I was haring off after some new operator or other
17:44 sorear Ordinals are things that let you index into the collection of all reals; they don't exist constructively
17:45 sorear (uncountable ones, at least)
17:45 havenn joined #perl6
17:46 * TimToady thinks of math concepts more vigorously than rigorously...
17:47 TimToady but I think I was assuming that the .one case is after you've determined $a !~~ $b and $b !~~ $a
17:48 TimToady but it's still bogus wrt ^-ness
17:49 TimToady but it would be nice if sets of ranges behaved in a sensible and/or useful fashion
17:51 TimToady possibly extensible to sets of smartmatches, though in general determining overlap there is a halting problem
17:51 Teratogen e to the u du dx / e to the u du / secant cosine tangent sine / 3.14159 / RAH!
17:51 Teratogen wait
17:51 Teratogen gah I screwed that up
17:51 TimToady you must not be from Caltech
17:51 sjohnson Calcutta Institute of Technology
17:52 TimToady but who's antidifferentiating?
17:52 Teratogen it's e to the x du dx / e to the u du /
17:52 Teratogen who remembers their Calculus Catechism?
17:53 Teratogen that raises an interesting question
17:54 Teratogen does Perl 6 do symbolic math?
17:54 sorear No.
17:54 TimToady not as generally conceived
17:54 arnsholt I think that belongs in a module
17:55 Araq joined #perl6
17:55 Teratogen does Perl 6 have bigint and bigfloat built in?  Or are those modules too?
17:55 TimToady Int is bigint
17:55 Teratogen cool!
17:55 TimToady there's no bigfloat support
17:55 sorear FatRat is bigrat
17:55 TimToady all rats are pretty fat to begin with :)
17:55 leprevost joined #perl6
17:56 Teratogen they eat rat in China.
17:56 Teratogen Of course, they eat almost everything in China.
17:56 Araq I think all rats start small and then grow on you
17:56 sorear arnsholt: actually I think that belongs in a system(...)
17:56 sorear o/ Araq !
17:56 * sorear eyes Teratogen suspiciously
17:56 Araq hi sorear
17:57 arnsholt sorear: Or calling an external program, certainly
17:57 arnsholt But life's always easier when I don't have to deal with other people^Wlanguages, I find =)
17:57 sorear arnsholt: symbolic math is not worth reinventing, imo
17:57 sorear differentiation isn't so bad
17:57 sorear but Risch? no just no
17:58 arnsholt True, true
17:58 Araq so how is bigint implemented? wrapper around GMP?
17:59 TimToady unspecified
17:59 dalek specs: 46a5991 | (Herbert Breunung)++ | S02-bits.pod:
17:59 dalek specs: removing "antiquities" regarding Pod, applying patch by damian
17:59 dalek specs: review: https://github.com/perl6/specs/commit/46a5991de5
17:59 dalek specs: a65c854 | (Herbert Breunung)++ | S03-operators.pod:
17:59 dalek specs: Merge branch 'master' of https://github.com/perl6/specs
17:59 dalek specs: review: https://github.com/perl6/specs/commit/a65c854a07
17:59 sorear depends on the compiler
17:59 Araq ok, ok, how does rakudo implement it?
17:59 sorear embedded libtommath
17:59 sorear GMP isn't portable enough, and is also license incompatible
17:59 TimToady I don't think any of our implementations use gmp...what sorear++ said
18:00 sorear pugs does
18:00 TimToady it doesn't get that free from Haskell?
18:00 TimToady or Haskell uses gmp?
18:00 sorear pugs is GHC specific, and GHC uses gmp
18:00 spider-mario ghc uses gmp
18:00 sorear or used to
18:00 spider-mario but haskell implementations are free to use whatever they want
18:00 sorear they might have left in the five years since I hacked haskell
18:01 spider-mario sorear : gmp is still used
18:01 TimToady that's one way to avoid success at any cost...
18:02 Araq IMHO they failed to do that and now are successful :-)
18:02 spider-mario ghc in arch depends on: perl  gmp>=5.0  gcc
18:02 sorear yeah
18:02 spider-mario (perl :p)
18:03 sorear even in 2007, "Avoid success at all costs" was mostly something curmudgeonly old men like myself said
18:03 geekosaur there is an alternative numeric libraryt hat doesn't use gmp, for when license issues are important etc.; it's slower enough that it's not the default
18:03 spider-mario some time ago, GHC’s “evil mangler” was written in Perl
18:03 spider-mario but the evil mangler is gone nowadays
18:04 sorear do you have a Glorious Mangler now?
18:04 spider-mario http://darcs.haskell.org/ghc/do​cs/comm/the-beast/mangler.html
18:04 geekosaur mangler went away when we started generating native asembly code
18:05 moritz sorear: pong
18:05 moritz sorear: there is indeed no timed rebuilds yet. I planned to put it back, but haven't gotten a round tuit yet
18:05 spider-mario there’s also a llvm backend but I don’t know what it’s worth now
18:06 spider-mario if I recall correctly, it was quite competitive with the asm backend when it was introduced
18:06 spider-mario I don’t know how the situation evolved
18:06 moritz sorear: I've written sync.pl, which needs to be called after the rebuild
18:07 sorear geekosaur: erm, you mean when -fno-via-C became available?
18:07 sorear moritz: nod
18:07 moritz sorear: if you beat me to setting it up, I'd be grateful, but if not I'll probably do it this (extended) weekend
18:08 lichtkind joined #perl6
18:08 lichtkind o/
18:09 lichtkind TimToady: we found out that 2 or 3 callframe methodes are underspecced
18:10 arnsholt moritz: Are you on OS X, or am I misremembering?
18:11 cognominal_ jonathan,the nqp shell seems broken because the World is "removed" under it, when executing the second prompt. What do you think of it?
18:13 lichtkind hai cognominal_
18:17 moritz arnsholt: you are misremembering
18:17 moritz arnsholt: I'm on linux. I needed to tweak LD_LIBRARY_PATH or whatever it is called
18:18 moritz r: class A is Exception { }; die A.new
18:18 p6eval rakudo 4373f0: OUTPUT«␤  in block <anon> at /tmp/rfl4v3pBew:1␤␤»
18:21 moritz std: class A { sub f { has $.x } }
18:21 p6eval std 1ad3292: OUTPUT«ok 00:00 41m␤»
18:22 moritz n:  class A { sub f { has $.x } }
18:22 p6eval niecza v15-6-gefda208: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤â�¤Attribute $!x declared outside of any class at /tmp/tuJ20Iq7DV line 1:â�¤------> [32mclass A { sub f { has $.x [33mâ��[31m} }[0mâ�¤â�¤Potential difficulties:â�¤  &f is declared but not used at /tmp/tuJ20Iq7DV line 1:â�¤------> [32mc…
18:23 cognominal_ hai, lichtkind
18:26 lichtkind cognominal_: good to see you again  (i know its a phrase)
18:28 arnsholt moritz: Dang. There's an issue with compiling the C code (conflicting linker args)
18:28 cognominal_ Well, I am always there even if I am not active on the channel
18:31 Araq so if libtom is part of rakudo's core, how does rakudo deals with finalization?
18:34 Araq i.e. how is mp_clear() invoked?
18:36 vlixes joined #perl6
18:37 moritz Araq: whenver an Int object is GCed
18:37 TimToady recursive grep finds zillions of calls to it
18:38 fgomez joined #perl6
18:40 TimToady but the ones you're interested in are probably the ones in ./nqp/src/6model/reprs/P6bigint.c
18:43 geekosaur sorear, it was and is spelled -fasm
18:44 geekosaur (sorry, my phone interview finally happened... was supposed to have started at *:00 not *:10)
18:44 geekosaur -fvia-C registerised required the evil mangler; -fasm and -fllvm do not
18:48 spider-mario -fvia-C unregistered either but it was slower, right?
18:48 spider-mario (the evil mangler just improved perfarmance)
18:48 spider-mario performance*
18:49 Araq ah speaking of which; what algorithm's does parrot's GC use?
18:49 Araq *algorithms
18:49 geekosaur evil mangler was part of the registerized code path, it was uspposed to improve performance but my understanding wass that toward the end nobody understoo what it was doing well enough to maintain it anyway
18:50 Araq mark&sweep?
18:52 geekosaur ...and it was more or less useless on x86, because not enough registers
18:52 geekosaur it worked best on sparc and other older architectures
18:53 acrussell joined #perl6
18:54 Araq never mind, I found the right file
18:54 samlh joined #perl6
18:54 TimToady Araq++
18:56 sjohnson TimToady: i was wondering.. do you use (or like) GNU Screen?
18:59 brrt joined #perl6
19:02 TimToady um, screen is only barely if at all a GNU thing, considering the manpage says "4th Berkeley Distribution"
19:03 spider-mario r: while True -> $x {say $x; last}
19:03 p6eval rakudo 4373f0: OUTPUT«True␤»
19:03 spider-mario (nevermind)
19:03 spider-mario +' '
19:03 TimToady just because something uses the GPL doesn't make it GNU
19:03 cognominal_ perl is a camel not a gnu.
19:05 TimToady but to answer your question, I'm typing on irssi through screen right now
19:06 TimToady (so I can detach and keep the same session, which is problematic on my home network with dynamic IP addresses)
19:06 doy screen has been maintained by gnu for a while now
19:06 TimToady so has patch, but they didn't write that either :)
19:06 doy (:
19:07 havenn joined #perl6
19:08 birdwindupbird joined #perl6
19:09 TimToady and in any case, I'd never capitalize it "Screen"
19:10 doy gnu does http://www.gnu.org/software/screen/
19:10 doy (:
19:10 TimToady only in the title
19:10 geekosaur doy, gnu maintains it these days but it's still mostly the original BSD screen
19:13 Teratogen gnu perl
19:17 lichtkind just updated http://www.perlfoundation.org/perl6/ind​ex.cgi?perl_6_lookup_tablet#smartmatch
19:18 * [Coke] in backscroll doesn't think sorear can refer to himself as a curmudgeonly old man, especially when TimToady and [Coke] are in the channel!
19:19 dalek roast: c6607d0 | moritz++ | S02-types/type.t:
19:19 dalek roast: refudge type.t for rakudo
19:19 dalek roast: review: https://github.com/perl6/roast/commit/c6607d0776
19:20 sorear sjohnson: unsolicited plug for tmux
19:21 sjohnson TimToady: i do the same thing too, except with a different client, weechat
19:21 doy sorear++ tmux++
19:22 sjohnson i call it GNU Screen cause I think Richard Stallman's minions force fed me false propaganda
19:22 * sjohnson looks into this travesty
19:22 sjohnson TimToady: http://www.gnu.org/software/screen/
19:22 sjohnson :3
19:22 masak TimToady++ # specs like I want :)
19:22 sjohnson maybe they took over the project, and stamped their GNU namesake on it
19:23 samlh r: macro redirect($code) { quasi { sub say(*@args) { say "Something else" }; {{{$code}}}(); } }; redirect { say "Hello world"; }  # should this work once {{{}}} works?
19:23 p6eval rakudo 4373f0: OUTPUT«Null PMC access in get_pmc_keyed_str()␤  in block <anon> at /tmp/UWiQr3QeZv:1␤␤»
19:24 sjohnson oh, sorry, looks like doy pasted that URL already.  oopsies
19:24 TimToady sorear only claimed ey was *like* a curmudgeonly only man
19:25 spider-mario hm, I’m getting “Unexpected named parameter 'help' passed”
19:25 Araq when is gc_gms_write_barrier() called?
19:25 spider-mario but my MAIN declaration is
19:25 spider-mario sub MAIN(Str $input = '-') {
19:29 masak spider-mario: that sounds odd. can you reproduce this error with a really small script?
19:30 jnthn masak: oooh! a macro null PMC access! ^^
19:30 masak oh noes :)
19:30 masak it has a sub in it...
19:30 masak and an unquote. that's not even implemented yet.
19:31 jnthn Araq: Potentially anywhere the GC_WRITE_BARRIER or whatever it's called macro is used, according to a flag check
19:31 masak ah. the comment indicates that samlh knows this :)
19:31 spider-mario masak : http://ompldr.org/vZDl0OQ/main.pl
19:31 jnthn cognominal_: Rakudo's REPL had the same issue before...it's GLOBAL that vanished beneath it iirc.
19:31 spider-mario Unexpected named parameter 'help' passed
19:31 spider-mario in sub MAIN at ./test.pl:3
19:31 spider-mario in block <anon> at ./test.pl:1
19:31 masak samlh: I think you would still get the regular &say with that one.
19:32 spider-mario *but* there is a script on which it correctly prints the usage
19:32 masak samlh: here's my reasoning: at the point in the mainline where you invoke &say, it binds to the regular one. careful managing of scopes makes sure that doesn't change.
19:32 spider-mario that script has a named parameter
19:33 masak spider-mario: I have SPb-172-gbd6fdeb built here, and it runs fine when I run it with no arguments.
19:34 masak spider-mario: says "I was passed -." just as expected.
19:34 spider-mario no argument causes no problem
19:34 spider-mario but try passing --help
19:34 spider-mario it should print USAGE, should it not?
19:34 spider-mario (with a generated default)
19:34 masak right, then it fails.
19:34 samlh masak: Hmm, ok. The reason I'm wondering is thinking of how to implement something like Coro async, so that blocking read automatically gets added to a select instead
19:34 masak I *think* it should print USAGE, yes.
19:35 masak samlh: I'm glad you're thinking along these lines. we sort of need to evolve patterns of how to code with macros.
19:38 lichtkind is there a char to forse pair context?
19:40 lichtkind or is pair gone?
19:40 lichtkind i mean the context op
19:42 lichtkind it looks like
19:45 samlh r: sub f() { say "f"; }; package Foo { sub f() is export { say "Foo::f"; } }; { import Foo; f }; f  # should this work?
19:45 p6eval rakudo 4373f0: OUTPUT«f␤f␤»
19:45 samlh that is, shouldn't it be F f instead
19:45 masak lichtkind: what is "pair context"?
19:45 lichtkind masak: you know if pair is gone as context op?
19:45 * masak .oO( things just turned really pair-shaped )
19:45 brrt p6: say <12 93 22>.^name
19:45 p6eval rakudo 4373f0, niecza v15-6-gefda208: OUTPUT«Parcel␤»
19:45 p6eval ..pugs: OUTPUT«Array␤»
19:46 masak lichtkind: what is "pair context"?
19:46 brrt which one is right?
19:46 jnthn Parcel
19:46 brrt i thought there was just the 'pair operator'
19:46 masak brrt: Rakudo and Niecza.
19:46 brrt tnx
19:46 masak brrt: assume Rakudo and Niecza are right when Pugs says something else ;)
19:46 lichtkind jnthn:  so youmean it | ?
19:50 jnthn lichtkind: No, it's a bug in NQP, just saying that Rakudo had a similar one...so easiest way to fix it is find that patch. I'll get to it at some point soon, but if you're up for trying to fix it then finidng that patch and doing something very similar in NQP is the easiest way. :)
19:50 lichtkind mask: once upon a time when little masak wasnt araound ehre i just copied it out of the synopses without clearly to understand what it was  or just dont remember
19:50 lichtkind i ment masak
19:51 lichtkind jnthn: i think your head is somewhere else i just loooking for the meaning of the "pair" builtin
19:51 masak lichtkind: then "pair context" was probably removed from the spec before I was born :)
19:52 brrt hmm, how do i say i want an array of Cool's coerced to Int?
19:52 masak lichtkind: I was just curious what it was. sounds like a sort of hash context for lonely scalars. :P
19:52 lichtkind yes sounds like that
19:52 brrt in a subroutine, that is
19:52 brrt subroutine signature
19:52 masak lichtkind: I think contexts shouldn't be traded that lightly. therefore I'm doubtful it ever existed at all.
19:53 masak lichtkind: now, a &pair listop might've existed at some point.
19:53 lichtkind but its still in the tablet aargh another one i have to remove
19:54 masak well, don't go adding things that don't exist in the first place! :P
19:54 lichtkind i  sure it existed when i added it
19:56 * masak reminds himself of the 'git log' option that helps in this kind of detective work
19:56 NamelessTee joined #perl6
19:56 moritz jnthn: in docs/serialiaztion_format.markdown, are the "32-bit integer"s signed or unsigned?
19:56 moritz masak: git log -S ?
19:57 masak yeah. just found it myself :)
19:57 masak moritz++
19:57 jnthn moritz: I think signed in the implementation reality, but not sure anything uses them being, so may change that.
19:57 jnthn Or clear up where it is/isn't.
19:58 jnthn moritz: Feel free to create an issue for it on GitHub.
19:58 jnthn The doc is likely imperfect in more than one way, but better than no docs at all and should be accurate. :)
19:58 jnthn Or at least not incorrect.
19:58 moritz jnthn: agreed
20:01 fgomez joined #perl6
20:01 jnthn .oO( "The doc is likely imprefect" ... "agreed" :P )
20:01 lichtkind masak: but instead i added entry for   ^ as a prefix for super methods
20:02 jnthn s/super/meta/
20:02 [Coke] im prefecture.
20:02 lichtkind yes
20:02 lichtkind but its a parent class?
20:02 jnthn My typing is imprefect :P
20:02 masak lichtkind: "super methods"? that can't be the right term for methods in the HOW object.
20:02 jnthn lichtkind: What is?
20:02 masak lichtkind: "super" generally means "base class".
20:03 masak lichtkind: .^foo does *not* call .foo on the parent class.
20:03 masak lichtkind: please go back and re-read S12 if you think that's the case :)
20:05 Araq when is this test PObj_flag_TEST(GC_need_write_barrier, o) true? and when false?
20:06 masak r: class Parent { method foo { say "I'm right here!" } }; class Child is Parent { method foo { self.^foo } }; Child.new.foo
20:06 p6eval rakudo 4373f0: OUTPUT«Method 'foo' not found for invocant of class 'Perl6::Metamodel::ClassHOW'␤  in method dispatch:<.^> at src/gen/CORE.setting:784␤  in method foo at /tmp/100uzUMCA0:1␤  in block <anon> at /tmp/100uzUMCA0:1␤␤»
20:06 Araq and how does the GC perform in benchmarks?
20:06 jnthn Araq: Not sure of the mechanism without going through the code, but it'll almost certainly be something to do with generations.
20:07 * masak .oO( the performance of the GC is trashy )
20:08 moritz probably it's true if the object is "dirty", ie needs to be considered in the next GC run
20:09 Araq ok, but when is it "dirty"?
20:09 Araq fyi, most GCs use 3 or less generations
20:10 moritz Araq: either if it's new and has never been marked, or if it has been changed (ie a write barrier has triggered)
20:10 lichtkind allright done
20:10 Araq er, but this check is done before the write barrier
20:10 jnthn moritz: It's not the mark bit
20:10 moritz Araq: iirc parrots GC uses just two generations
20:11 Araq it seems to use 4 in the source
20:11 jnthn moritz: Parrot is configurable afaik, and I think it uses eight. Which is more than typical
20:11 jnthn Oh, maybe configured to 4 then...
20:11 Araq jnthn: 8 is the maximum that can be used
20:11 moritz jnthn: I thought it was the "Needs to be considered for marking" flag, but I might very well be wrong
20:12 Araq but I see; if a field within an object triggered the write barrier, the owner's bit is set
20:12 Araq and this is tested by PObj_flag_TEST(GC_need_write_barrier, o)
20:13 dalek roast: 52d4515 | moritz++ | S06-other/main-usage.t:
20:13 dalek roast: RT #92986, MAIN should do a normal multi dispatch, not just call the first matching candidate
20:13 dalek roast: review: https://github.com/perl6/roast/commit/52d4515e38
20:14 * [Coke] doesn't see any rakudo proposals for parrot GSOC OR for TPF's latest call.
20:14 lichtkind i found something to do when i not know what to do, backlinks from index b to index a
20:15 havenn joined #perl6
20:16 moritz r: say 1, 2, 6 ... *
20:16 p6eval rakudo 4373f0: OUTPUT«...␤»
20:16 moritz r: say 1, 2, 6 ... 10
20:16 p6eval rakudo 4373f0: OUTPUT«unable to deduce sequence␤  in method Str at src/gen/CORE.setting:8203␤  in method Stringy at src/gen/CORE.setting:674␤  in method join at src/gen/CORE.setting:1059␤  in method Str at src/gen/CORE.setting:4862␤  in method gist at src/gen/CORE.setting:5156␤  in sub …
20:22 masak moritz: what was that first one?
20:22 s1n joined #perl6
20:22 masak is this something out of RT?
20:22 moritz it is
20:22 masak oh good :) it belongs there :)
20:22 moritz r: say ~(1, 2, 6 ... *)
20:22 p6eval rakudo 4373f0: OUTPUT«...␤»
20:23 moritz r: say ~(1, 2, 6 ... *)[10]
20:23 p6eval rakudo 4373f0: OUTPUT«␤»
20:23 moritz eeks
20:23 moritz no, that particular thing isn't in RT
20:23 * masak submits rakudobug
20:23 Araq how does the GC perform in comparison to Boehm's?
20:23 moritz Araq: much better
20:23 Araq why?
20:23 moritz Araq: there was a branch that plugged Boehm's GC into parrot, and it was slower
20:24 moritz possibly because it's optimized for parrot's specific needs
20:24 Araq when was that?
20:24 moritz before we got the generational GC
20:24 Araq well Boehm ain't bad these days
20:24 moritz so maybe 1 or 2 years
20:26 dalek rakudo/nom: fd7f971 | moritz++ | tools/build/NQP_REVISION:
20:26 dalek rakudo/nom: bump NQP revision to get NativeCall serialization fix
20:26 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/fd7f971028
20:26 dalek rakudo/nom: 2c35bdb | moritz++ | src/core/ (2 files):
20:26 dalek rakudo/nom: typed exception for failed sequence deduction
20:26 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/2c35bdb56e
20:28 dalek roast: 2365690 | moritz++ | S32-exceptions/misc.t:
20:28 dalek roast: RT #98678, error message for failed sequence deduction
20:28 dalek roast: review: https://github.com/perl6/roast/commit/2365690f05
20:28 TimToady the difference might be less when parrot uses more compact storage
20:30 moritz down to 72 testneeded tickets
20:30 TimToady by which I mean that Boehm will do better as a larger percentage of each object consists of pointers
20:31 TimToady my impression is that parrot objects are still relatively fluffy though
20:31 * moritz too
20:31 Araq how does Parrot's GC deal with threading?
20:31 sorear does parrot have threading?
20:32 moritz sorear: nine is working on that. Green threads are already tehre
20:33 benabik Araq: The current threading implementation (in progress) has a separate GC per OS-thread
20:33 Araq I see
20:33 avar joined #perl6
20:33 avar joined #perl6
20:34 dalek nqp/toqast: ba5e1c1 | jonathan++ | src/QAST/Regex.nqp:
20:34 dalek nqp/toqast: Switch QAST::Regex attributes to use native types.
20:34 dalek nqp/toqast: review: https://github.com/perl6/nqp/commit/ba5e1c1180
20:34 dalek nqp/toqast: d4db55a | jonathan++ | / (2 files):
20:34 dalek nqp/toqast: Stub in QAST::Op.
20:34 dalek nqp/toqast: review: https://github.com/perl6/nqp/commit/d4db55a51c
20:35 Araq so there is only message passing between threads?
20:35 masak http://blogs.perl.org/users/kmx/2012/​04/i-was-called-fucking-asshole.html makes me sad :(
20:37 sorear benabik: oh, ithreads-style?
20:37 benabik sorear: Not familiar with ithreads.
20:37 masak "There ain't nothin' in this world that's worth being a snot over." -- TimToady
20:41 moritz jnthn: I still get a segfault in the mysql test (right in the connect call)
20:41 jnthn moritz: Yeah, I sadly didn't get to look at it since you reported it.
20:42 jnthn moritz: It's memory corruption of some kind...so seems non-trivial to find. :(
20:43 jnthn moritz: Maybe valgrind can help.
20:43 moritz jnthn: I know :/ but still it would be very, very useful to fix it before the Hackathon in Oslo
20:43 jnthn moritz: Agree.
20:43 moritz (at least if we want to tackle DB stuff there)
20:43 Araq how do you work around valgrind when tracing the hw stack conservatively?
20:44 Araq I filled a bug report for valgrind for this use case, but never got an answer
20:44 * jnthn ain't used valgrind on Parrot himself, but knows @other have.
20:45 moritz jnthn: running with valgrind now
20:46 jnthn moritz: oh, awesome
20:47 moritz I get lots of Use of uninitialised value of size 8 in Parrot_CallContext_mark
20:47 moritz and some from Parrot_String_mark
20:49 jnthn moritz: Maybe also good would be to do a run that just loads the DBI module but nothing more (e.g. doesn't try to connect)
20:49 jnthn Then we can compare the two...the differences may well point out the issue.
20:49 sorear benabik: ithreads is a perl 5 threading subsystem where "threads" cannot share variables
20:49 sorear benabik: it's derived from the win32 fork emulation'
20:50 benabik sorear: Not really.  If you have a reference to something in another thread, it will create tasks on the other thread when you call it.
20:51 dalek nqp/toqast: ff18cac | jonathan++ | src/QAST/Node.nqp:
20:51 dalek nqp/toqast: Another nativization.
20:51 dalek nqp/toqast: review: https://github.com/perl6/nqp/commit/ff18caca55
20:53 moritz valgrind now says
20:53 moritz ==32611== More than 10000000 total errors detected.  I'm not reporting any more.
20:53 moritz ==32611== Final error counts will be inaccurate.  Go fix your program!
20:53 Araq yeah, valgrind does not like GCs ... ;-)
20:54 jnthn o.O
20:54 Araq unless there is a switch I'm missing
20:55 jnthn moritz: ooc, if you run with parrot -G does the segfault go away?
20:56 moritz jnthn: will check
20:57 vlixes joined #perl6
20:58 moritz jnthn: wow, with -G parrot eats up lots of memory until the OOM killer stops it
21:00 masak r: say (so not True)
21:00 p6eval rakudo 4373f0: OUTPUT«False␤»
21:00 masak :D
21:01 masak r: my &that_is = &say; that_is so not True
21:01 p6eval rakudo 4373f0: OUTPUT«False␤»
21:03 jnthn moritz: I wonder if it's possible to get this down to a smaller test case...
21:06 Araq apparently you can make valgrind quiet about the stack scanning by providing a "suppression file"
21:08 moritz Araq: and that seems to be quite a piece of science on its own
21:08 moritz jnthn: well, there are other segfaults I remember
21:09 moritz jnthn: for one, adding some natively typed str ops to the setting caused some segfaults, last I tried
21:09 jnthn moritz: Interesting, though not automatically related
21:09 pernatiy joined #perl6
21:11 Araq so if GCs a per thread, is there any shared heap available too?
21:12 sorear Sounds like no, from what benabik is saying
21:12 moritz jnthn: and SVG::Pie segfaults/segfaulted with precompiled modules
21:13 Araq so how would a "junction" (right term?) ever be parallelized?
21:14 sorear junctions aren't parallelized
21:15 masak and unless you have more than a hundred things in your junction, I wonder whether it'll ever be economical to parallelize them.
21:15 moritz well, they could be, but I don't really see the point
21:15 masak I'd rather we focus on parallelizing >>.method calls
21:16 Araq ok, sorry picked the wrong term
21:17 Araq well how would 'map' for instance be parallelized?
21:18 masak it wouldn't, per default.
21:18 masak it is if you modify it with 'hyper'.
21:18 masak same with 'for', IIRC.
21:18 masak and 'grep', I'd guess.
21:19 masak but not 'sort' :)
21:19 Araq kk, so a 'hyper map' copies parts of the array/list to some other thread to process it?
21:20 masak it parallelizes, m'kay?
21:20 masak :P
21:20 moritz wow, under valgrind  it manages to connect to the DB
21:20 Araq the devil is in the details, masak
21:21 masak and don't I know it.
21:21 masak "ask not what parallelization can do for you, ask what you can do for parallelization" ;)
21:21 dalek roast: e630836 | masak++ | S03-smartmatch/range-range.t:
21:21 dalek roast: [S03-smartmatch/range-range.t] new test file
21:21 dalek roast:
21:21 dalek roast: Prompted by
21:21 dalek roast: http://github.com/perl6/specs/commit/f0​f29e7bd352d210eafa1c09c8b7174ff7f8c4fd
21:21 dalek roast: review: https://github.com/perl6/roast/commit/e630836923
21:23 Araq how is a message passed between threads in parrot?
21:23 moritz Araq: I think you'll have much more success if you ask nine in #parrot on irc.perl.org
21:23 pmichaud what *should* rt #112288 produce?
21:24 * masak looks
21:24 lichtkind yeah backlinks for sigils and twigils are ready
21:24 jnthn o/ pmichaud
21:24 pmichaud r: say (1, 2, 6 ... *)[10]
21:24 p6eval rakudo 4373f0: OUTPUT«Nil␤»
21:24 moritz r: 1, 2, 6 ... 8
21:24 p6eval rakudo 4373f0:  ( no output )
21:24 pmichaud That looks right to me.
21:24 moritz r: say 1, 2, 6 ... 8
21:24 p6eval rakudo 4373f0: OUTPUT«unable to deduce sequence␤  in method Str at src/gen/CORE.setting:8203␤  in method Stringy at src/gen/CORE.setting:674␤  in method join at src/gen/CORE.setting:1059␤  in method Str at src/gen/CORE.setting:4862␤  in method gist at src/gen/CORE.setting:5156␤  in sub …
21:24 moritz pmichaud: I'd expect to get exactly that error
21:24 pmichaud why?
21:24 masak pmichaud: "unable to deduce sequence"
21:24 pmichaud why?
21:24 moritz pmichaud: because it fails to deduce the sequence
21:24 pmichaud You did get the Failure object, but never used it.
21:25 masak pmichaud: because it's neither an arith nor a geom sequence.
21:25 pmichaud [10] goes beyond the failure object.
21:25 pmichaud r: say (1, 2, 6 ... *)[0]
21:25 p6eval rakudo 4373f0: OUTPUT«1␤»
21:25 pmichaud r: say (1, 2, 6 ... *)[1]
21:25 p6eval rakudo 4373f0: OUTPUT«2␤»
21:25 pmichaud r: say (1, 2, 6 ... *)[3]
21:25 p6eval rakudo 4373f0: OUTPUT«unable to deduce sequence␤  in method gist at src/gen/CORE.setting:8204␤  in sub say at src/gen/CORE.setting:6249␤  in block <anon> at /tmp/npqrZ_Cp_9:1␤␤»
21:25 masak d'oh!
21:25 moritz erm
21:25 pmichaud r: say (1,2,6 ... *)[^10]
21:25 p6eval rakudo 4373f0: OUTPUT«unable to deduce sequence␤  in method gist at src/gen/CORE.setting:8204␤  in method gist at src/gen/CORE.setting:4206␤  in sub say at src/gen/CORE.setting:6249␤  in block <anon> at /tmp/5UQmg3XYsd:1␤␤»
21:26 jnthn pmichaud: Does [10] not reify up to that point?
21:26 pmichaud it does
21:26 pmichaud but the sequence ends after the 6
21:26 jnthn pmichaud: oh but, failure...got it...
21:26 pmichaud with "unable to deduce sequence"
21:26 masak it's right but it feels wrong.
21:26 moritz r: say (1, 2, 6 ... *)
21:26 p6eval rakudo 4373f0: OUTPUT«...␤»
21:26 moritz *that* one feels wrong
21:26 masak I don't like that either.
21:26 pmichaud I agree that one seems to gist wrongly
21:26 moritz r: say ~(1, 2, 6 ... *)
21:26 p6eval rakudo 4373f0: OUTPUT«...␤»
21:27 moritz and that one *certainly* is
21:27 pmichaud the point being that it's lazy
21:27 moritz and ~ is eager
21:27 masak in the unforgettable words of GlitchMr: "..."
21:27 pmichaud but  ... *   is infinite, which pre-empts eagerness
21:27 moritz r: say ~(1, 2, 6 ... *).eager
21:27 p6eval rakudo 4373f0: OUTPUT«...␤»
21:27 pmichaud ~ is *mostly eager*
21:27 moritz well, if it's infinite, why does .[10] not return anything?
21:28 pmichaud ... * is infinite for purposes of eagerness
21:28 pmichaud it really means "we don't know how long this is, so stop here instead of continuing blindly along"
21:28 jnthn moritz: Infinite as in "result of .infinite"
21:29 pmichaud Infinite as in "signalled to be potentially infinite by virtue of a whatever term", to be a bit more precise
21:29 moritz be that as it may, it's currently way too hard to get the error message out of that lazy, failed sequence
21:29 * moritz -> sleep
21:30 pmichaud we can potentially fix the .Str method to go ahead and grab the non-lazy terms from the sequence.  But that's not specced nor (as I read it) currently required by the spec.
21:30 sorear Araq: fwiw, niecza supports multithreading with a shared heap RIGHT NOW.
21:30 Araq sorear: yeah but that's boring ;-)
21:31 pmichaud Indeed, having anything depend on particular lazy semantics has traditionally been considered "not in the spec"
21:31 Araq can't learn from that, nor can I steal it
21:32 masak must the failed sequence result in a failure? can't it just five a good ol' error?
21:32 masak give*
21:32 pmichaud Normally we signal errors by returning failure.
21:32 vlixes left #perl6
21:33 pmichaud If you want it to die immediately, I suppose that could happen... but that seems very inconsistent with the other error handling mechanisms
21:34 masak well, in general I'm happier the earlier I discover that something I wrote would never have given the expected result.
21:34 masak I know that flies in the face of laziness, but...
21:34 masak I can't really see someone being disappointed that they got this error message *too early* :)
21:34 pmichaud it's also hard to know where/when it should die.  I mean, there's an argument to be made that   1, 2, 3, 6, 7, $b ... $c   shouldn't result in an exception until after we've eaten the first few terms of the sequence
21:35 masak hm.
21:35 pmichaud same for something like    @a ... $c
21:36 dalek nqp/toqast: 3e9ecfc | jonathan++ | src/QAST/Node.nqp:
21:36 dalek nqp/toqast: Add a way to mark types on QAST nodes if known.
21:36 dalek nqp/toqast: review: https://github.com/perl6/nqp/commit/3e9ecfc7be
21:36 dalek nqp/toqast: de37dc4 | jonathan++ | / (3 files):
21:36 dalek nqp/toqast: Start sketching out compile-time known value handling and how we'll reference values in World (so common it deserves explicit support).
21:36 dalek nqp/toqast: review: https://github.com/perl6/nqp/commit/de37dc4a57
21:38 Araq masak: sounds like you want static typing ;-)
21:43 pmichaud n: say ~(1, 2, 6 ... *)[10]   # curious
21:43 p6eval niecza v15-6-gefda208: OUTPUT«Unhandled exception: Unable to figure out pattern of series␤  at /home/p6eval/niecza/lib/CORE.setting line 1366 (die @ 3) ␤  at /home/p6eval/niecza/lib/CORE.setting line 3098 (get-next-closure @ 25) ␤  at /home/p6eval/niecza/lib/CORE.setting line 3110 (ANON…
21:43 pmichaud n: say ~(1, 2, 3 ... *)[2]   # curious
21:43 p6eval niecza v15-6-gefda208: OUTPUT«3␤»
21:44 pmichaud n: say ~(1, 2, 6 ... *)[2]   # curious
21:44 p6eval niecza v15-6-gefda208: OUTPUT«6␤»
21:44 pmichaud n: say ~(1, 2, 6 ... *)[4]   # curious
21:44 p6eval niecza v15-6-gefda208: OUTPUT«Unhandled exception: Unable to figure out pattern of series␤  at /home/p6eval/niecza/lib/CORE.setting line 1366 (die @ 3) ␤  at /home/p6eval/niecza/lib/CORE.setting line 3098 (get-next-closure @ 25) ␤  at /home/p6eval/niecza/lib/CORE.setting line 3110 (ANON…
21:45 masak Araq: what does sequence deduction have to do with typing?
21:45 pmichaud I suppose one could argue that with   1, 2, 6 ... *    the result should have an infinite list of Failure objects after the 6
21:45 masak fine by me :)
21:45 jnthn wfm
21:45 masak pmichaud++
21:45 jnthn I can pun on "infinite failure" :)
21:46 masak "this time, the pragmatic solution was an INFINITE LIST OF FAILURES"
21:46 daemon Hey all im a perl5 and erlang user; I have decided to branch out and learn something a little new. I do alot of stuff in web development (so catalyst mainly -_-) I could go ahead and learn python but what does perl6 have to offer? or still not mature enough for web based work
21:46 pmichaud I'm not entirely comfortable with that solution, though.
21:46 masak daemon: hi! I'm writing a reply.
21:47 Araq masak: "in general I'm happier the earlier I discover that something I wrote would never have given the expected result."
21:47 lichtkind whats actually $*ON_DIE please?
21:47 masak Araq: yeah, but that's wider than static typing.
21:47 pmichaud http://ntlug.org/pipermail/discuss​/Week-of-Mon-20120402/033913.html  # here's a Perl 6 answer I was able to give earlier today :)
21:47 masak lichtkind: generally, between one and six pips :P
21:48 lichtkind masak: whut?
21:48 masak daemon: since you know Perl 5, I don't have to explain that Perl 6 is also fun to use, and makes programming fun.
21:48 masak lichtkind: http://en.wikipedia.org/wiki/Dice
21:48 masak lichtkind: sorry, I'm being facetious. :)
21:49 daemon masak, I have not seen catalsyst etc for perl6 though; do not worry I will be looking into perl6 but I was really more asking if there is any frameworks or base or if I did a site in perl6 I would be starting from scratch
21:49 masak there's Bailador.
21:49 masak but more or less, yeah, you'd be starting from scratch.
21:50 masak it's pretty much a DIY shop right now.
21:50 daemon I see :)
21:50 daemon ah clone of dancer
21:50 masak aye.
21:50 masak phenny: "Bailador"?
21:50 phenny masak: "dancer" (es to en, translate.google.com)
21:50 daemon I see :)
21:50 daemon thank you for the info masak
21:51 masak no problemo.
21:51 mj41 left #perl6
21:54 fgomez joined #perl6
21:54 sorear .oO( most of the dice I have around here have numbers 1-N, N \in { 4,6,8,10,12,20 } painted on the faces )
21:55 lichtkind masak: ive no problem with that ust if the right answer arrives at some time :)
21:56 lichtkind first 25 backlinks
21:57 masak lichtkind: ok, here's the right answer: $*ON_DIE is an underspec'd variable mentioned exactly once in the spec, namely in S28. you probably know this since that's likely where you got it from.
21:57 masak lichtkind: you also probably know, since I said it the other day, that S28 is filled with dragoons. :)
21:58 masak the only thing S28 really seems to say on the topic is "$SIG{__DIE__} is done gone away. it has been replaced with a dynamic variable, the specifics of which we haven't bovver'd to go into"
22:01 lichtkind masak:  i argue also that $?XVM will survive some serious thinking
22:02 lichtkind masak: when the backlinks are complete you know how wonderfull it will be you can click from many terms to its category table and click there on each entry to index A back this will be very effective form of learning
22:08 lichtkind but im not sure anyone at all uses it currently :)
22:10 fgomez joined #perl6
22:12 pmichaud I wonder if _any_ sequence that encounters a "unable to deduce sequence" condition should generate an infinite sequence of failures
22:12 pmichaud e.g.,   say (1, 2, 6 ... 80)
22:13 masak r: say (1, 2, 6 ... 80)[10]
22:13 p6eval rakudo 4373f0: OUTPUT«Nil␤»
22:13 masak so... yes? :(
22:13 masak :)
22:14 pmichaud it would seem odd to convert a finite sequence into an infinite one, though.
22:14 pmichaud ("finite" here means "sequence that the programmer did not indicate as somehow 'infinite' via *")
22:15 masak aye.
22:15 pmichaud r:  say (1, 2, 6 ... 80).elems
22:15 p6eval rakudo 4373f0: OUTPUT«4␤»
22:15 pmichaud r:  say (1, 2, 6 ... *).elems
22:15 p6eval rakudo 4373f0: OUTPUT«Inf␤»
22:16 * masak .oO( but Inf of those Inf elements are Failures... )
22:21 lichtkind shit i have to rewrite the inf entry, just stop talking!
22:21 pmichaud lichtkind: ah, get used to rewrites.  :)   I've lost count of how many times I've had to rewrite the list code itself :)
22:21 masak ok, everyone stop chaning Perl 6 until lichtkind is done.
22:21 masak changing*
22:21 tadzik did anyone try to compile Rakudo on ARM?
22:22 pmichaud an ARM probably isn't powerful enough.  You might need a LEG instead :)
22:22 pmichaud (j/k)
22:22 * masak .oO( an ARM and a LEG... )
22:22 tadzik ;)
22:22 jnthn tadzik: Sure there's no 'arm in trying...
22:22 tadzik ISTR snarkyboojum was running perl 6 on his N900
22:23 * masak .oO( putting Perl 6 in ARM's way... )
22:23 masak ahh, so many puns to (arm) wrestle with...
22:24 lichtkind done
22:24 tadzik wrestling considered 'armful
22:24 lichtkind haha
22:24 lichtkind and i not even start with the real tablets
22:24 kborer joined #perl6
22:24 * pmichaud declares a pun armistice
22:25 masak nicely self-contradictory :)
22:25 * jnthn lays down his arms
22:25 * masak .oO( the right to arm bears )
22:26 dalek rakudo/nom: cb61d59 | masak++ | / (2 files):
22:26 dalek rakudo/nom: [src/core/Range.pm] Range ~~ Range semantics
22:26 dalek rakudo/nom:
22:26 dalek rakudo/nom: Now by spec. \o/
22:26 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/cb61d593c7
22:26 masak moritz++ # for nagging me about "the proper approach" :)
22:27 lichtkind k last edit for today good night and have fun (without rewrites if possible)
22:27 pmichaud masak++ # nice patch
22:28 pmichaud well, time to take @kid[1] to soccer practice;  bbl
22:30 pmichaud masak: any reason that the patch doesn't follow exactly what the spec says?   (i.e.,  .bounds.all )
22:30 masak pmichaud: because if the caveat in same spec.
22:30 jnthn *of
22:30 pmichaud ah, the ^'s
22:30 masak :)
22:31 masak (i.e. excludes_min and _max matter)
22:31 masak jnthn: you're not supposed to correct other people's typos! :P
22:31 jnthn Same room rule. :P
22:31 pmichaud maybe the spec should explicitly say .min and .max
22:31 masak dang. :P
22:31 masak pmichaud: how does that help?
22:32 pmichaud subclassing/overloading
22:32 masak pmichaud: but... .bounds is just a method that delegates to .min, .max
22:33 pmichaud in Range, yes.
22:33 masak well, $!min, $!max to be precise.
22:33 pmichaud but a subclass of Range could redefine bounds
22:33 masak ok, I see your point.
22:33 pmichaud I agree it's a nit-pick
22:33 masak though I think it would be insane to redefine .bounds to differ from .min/.max
22:34 masak it would surely violate the spirit of Range.
22:34 pmichaud but if there's a difference between code and spec, I generally want to have a good reason for it; especially if changing one of them to match the other isn't too onerous
22:35 masak well, my point is that a simple .bounds.all check doesn't cut it, because much of the semantics actually resides in that caveat clause.
22:35 pmichaud agreed
22:35 pmichaud however:
22:36 pmichaud what about something like     (10..1) ~~ (5..6)
22:36 pmichaud r:  say (10..1).min
22:36 p6eval rakudo 4373f0: OUTPUT«10␤»
22:36 pmichaud r:  say (10..1).max
22:36 p6eval rakudo 4373f0: OUTPUT«1␤»
22:36 pmichaud r:  say (10..1).bounds.all ~~ 5 .. 6
22:36 p6eval rakudo 4373f0: OUTPUT«all(True, False)␤»
22:36 masak aughh.
22:37 pmichaud whereas I think your patch will end up with True
22:37 masak nodnod
22:37 pmichaud or some other similar case
22:37 masak right.
22:37 masak what about 5..4 ~~ 3..8 ?
22:38 masak should it be True or False?
22:38 pmichaud I don't know.
22:38 masak the empty set is a subset of any set.
22:38 masak but ranges aren't exactly sets either.
22:38 pmichaud yes, that's what I was thinking
22:38 pmichaud right, because   5..2 ~~ 10..20   should probably be false-ish
22:38 masak right.
22:39 pmichaud anyway, there still seems to be a couple of hole cases :)
22:40 masak aye.
22:40 masak more spectests needed. :)
22:40 pmichaud more spec clarification needed :)
22:40 masak TimToady: ^
22:40 pmichaud anyway, I have to depart -- I leave it to you and moritz++ to work on for a bit
22:40 pmichaud and TimToady++ too, of course
22:40 masak o/
22:41 jnthn o/
22:42 masak here's my current working hypothesis: 5..4 ~~ 3..8 gives True but 5..2 ~~ 10..20 gives False. the first is an empty range but it's empty "inside" of the range matched against. the second is empty but outside.
22:42 pmichaud um.... wouldn't   .ACCEPTS($topic.bounds.all)     already handle the ^ cases?
22:42 pmichaud er,   self.ACCEPTS(...)
22:45 masak it would. so maybe the spec caveat is actually meaningless.
22:45 pmichaud I think so.
22:45 masak no wait.
22:45 masak it's not.
22:45 masak it only handles them for the surrounding range.
22:45 pmichaud I don't think we have to worry about them for the subset range
22:45 masak the enclosed range still needs to special-case its .bounds
22:45 masak yes, we do.
22:45 pmichaud example?
22:46 masak 2..^4 ~~ 1..^4
22:46 pmichaud hrm
22:47 Teratogen p6: say -10..-20;
22:47 p6eval rakudo 4373f0, niecza v15-6-gefda208: OUTPUT«-10..-20␤»
22:47 p6eval ..pugs: OUTPUT«␤»
22:49 pmichaud okay,  so .bounds.all is sufficient but not necessary
22:49 pmichaud anyway, I do have to leave -- bbl
22:49 Teratogen bye!
22:51 pmichaud so perhaps the algorithm is more complex than can appear in that simple column of S03
22:51 pmichaud i.e., it's one of those matches that is truly "smart"
22:52 masak do we have to provide the algorithm as runnable code?
22:52 pmichaud no
22:52 masak I mean, it's really easy to state in language.
22:52 masak "the range is contained in the other range"
22:52 pmichaud at least, I don't believe that every entry of the smart match table must be reduce-able to a few characters of runnable code
22:52 pmichaud that's why smart match can be "smart" :)
22:52 pmichaud TimToady++ may of course disagree
22:53 pmichaud or perhaps "mod ^'s" is really pointing out that .bounds.all is sufficient but not necessary
22:53 pmichaud anyway, gotta go, for realz this time
22:57 whiteknight joined #perl6
22:57 masak there's a nagging feeling that .bounds along with some notion of (mathematical) epsilon would help stating a both necessary-and-sufficient condition.
22:58 masak that said, I still think "range X contains range $_" is both clear and unambiguous. :)
22:58 masak well, um, apart from the empty-ranges consideration... :/
22:58 * masak stops thinking about this for now
23:01 pmurias joined #perl6
23:01 pmurias [Coke]: TPF's latest call?
23:01 fgomez joined #perl6
23:20 pmurias [Coke]: where can i read about that?
23:27 masak 'night, #perl6
23:33 colomon \o
23:35 masak changed my mind. 5..4-style ranges, by virtue of being "impossible" ranges, should never be considered to be contained inside another range.
23:35 masak in some sense, all impossible ranges are equivalent, and thus none of them are contained in another range.
23:36 masak 'night.
23:38 doy seems odd that 5..$n would match 1..* for all $n >= 5, but not for $n < 5
23:50 dalek specs: 2019017 | larry++ | S03-operators.pod:
23:50 dalek specs: be very specific about Range ~~ Range semantics
23:50 dalek specs: review: https://github.com/perl6/specs/commit/201901725b
23:50 * jnthn -> sleep
23:54 [Coke] pmurias: http://news.perlfoundation.​org/2012/04/2012q1-cal.html
23:56 [Coke] pmurias: note that while we /typically/ get perl5 grant submissions, perl6 submissions are fine also. (Though I'm the only "perl 6" person on the committee)
23:58 da2ce7 joined #perl6

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

Perl 6 | Reference Documentation | Rakudo