»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
timotimo n: <1 2 3 4>.map: { .say } 00:00
p6eval niecza v15-6-gefda208: OUTPUT«1␤2␤3␤4␤»
timotimo n: ((-1..1) X (-1..1)).map: { .say }
p6eval niecza v15-6-gefda208: ( no output )
timotimo i do not understand this
n: ((-1..1) X (-1..1)).tree.perl
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…
timotimo n: ((-1..1) X (-1..1)).perl
p6eval niecza v15-6-gefda208: ( no output ) 00:01
00:01 tyatpi joined
timotimo n: say ((-1..1) X (-1..1)).perl 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, Trashlord joined
timotimo n: ((-1, 1) X (-1, 1)).map { say "hm."; } 00:01
p6eval niecza v15-6-gefda208: OUTPUT«===SORRY!===␤␤Unexpected block in infix position (method call needs colon or parens to take arguments) at /tmp/_MOAJrKYCr line 1:␤------> ((-1, 1) X (-1, 1)).map ⏏{ say "hm."; }␤␤Parse failed␤␤»
timotimo n: ((-1, 1) X (-1, 1)).map: { say "hm."; }
p6eval niecza v15-6-gefda208: OUTPUT«hm.␤hm.␤hm.␤hm.␤hm.␤hm.␤hm.␤hm.␤»
timotimo n: ((-1..1) X (-1..1)).map: { say "hm."; } 00:02
p6eval niecza v15-6-gefda208: ( no output )
timotimo i see. i guess?
niecza does perform very much better at junctions, though 00:09
a simple benchmark says 40sec for rakudo, 3 seconds for niecza 00:10
TimToady there are a number of tasks that niecza does 20x faster than rakudo, so this is probably just that, whatever it is 00:13
00:23 cbk1090 joined
diakopte1 . 00:23
00:23 diakopte1 is now known as diakopter
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:28
both on rakudo i mean 00:30
that's pretty drastic i think
geekosaur timotimo, I think all you're learning is that rakudo (or, often, parrot) sucks, which isn't news
00:30 cooper left
timotimo oke :| 00:31
geekosaur in particular it is well known that rakudo has severe performance issues in general
timotimo i wouldn't complain as much if niecza would run the code i'm trying to develop :p 00:32
geekosaur take it as a subtle hint that you should be contributing code to make it work? :) 00:33
(...not that I could do so, even...)
timotimo ;)
00:40 fgomez left 00:52 whiteknight joined
dalek ecs: 2d1c745 | (Herbert Breunung)++ | S28-special-names.pod:
fixed my own bug s/=dATA/=data/
00:53
00:53 havenn joined, havenn left
sorear good * #pel6 00:56
dalek ecs: dec4822 | (Herbert Breunung)++ | S28-special-names.pod:
forgot v++ im noob
moritz good *, sorear 00:57
00:58 whiteknight left 01:00 whiteknight joined
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
masak: S02:4481 # IntStr
01:01 spaceships joined
sorear std: [.rotate(-1)] 01:08
p6eval std 1ad3292: OUTPUT«===SORRY!===␤Method call found where infix expected (change whitespace?) at /tmp/Md9Fl4UXVA line 1:␤------> [⏏.rotate(-1)]␤ expecting infix or meta-infix␤Parse failed␤FAILED 00:00 41m␤»
01:25 scott___ joined
lichtkind good night 01:31
01:31 lichtkind left
TimToady evalbot rebuild std 01:34
p6eval OK (started asynchronously)
01:46 retupmoca left
sorear shiny, looks like I have a lot of stuff to forward from std 01:54
01:55 tyatpi_ left, whiteknight left, tyatpi left 02:02 tokuhirom left, tokuhirom joined
TimToady std: [.rotate(-1)] 02:06
p6eval std 1ad3292: OUTPUT«===SORRY!===␤Method call found where infix expected (change whitespace?) at /tmp/VV3PKuRvt1 line 1:␤------> [⏏.rotate(-1)]␤ expecting infix or meta-infix␤Parse failed␤FAILED 00:00 41m␤»
02:06 tokuhirom left
TimToady ssssslllllllllllooooooooooooooooooooooooooowwwwwwwwwwwwwwwwwwwwwwwww 02:07
02:11 vlixes joined 02:13 PZt left 02:23 orafu left, orafu joined 02:24 PZt joined 02:31 benabik joined 03:06 leprevost joined 03:07 PacoAir left 03:39 sftp left 03:57 fgomez joined 04:15 sudokode left 04:18 ruoso left, ingy left, ingy joined, ruoso joined 04:29 localhost left 04:30 leprevost left 04:57 NamelessTee joined 05:10 birdwindupbird joined 05:21 kaare_ joined
moritz TimToady: the rebuild infrastructure isn't quite in place yet on feather{1,3} 05:39
05:46 kaleem joined 05:48 spaceships left 05:54 NamelessTee left 05:56 agentzh joined 06:22 brrt joined 06:36 brrt left 06:45 wtw joined 06:46 kaare_ left, tarch joined 06:59 grondilu joined
grondilu perl6: say defined(Mu|Mu) 06:59
p6eval pugs: OUTPUT«*** No such subroutine: "&Mu"␤ at /tmp/dz4Ijbdy02 line 1, column 13-18␤»
..rakudo 4373f0, niecza v15-6-gefda208: OUTPUT«True␤»
grondilu shouldn't this return False?? 07:00
07:01 agentzh left
moritz grondilu: no, the Mu|Mu junction is defined 07:01
grondilu: defined() doesn't autothread; otherwise defined(Mu) couldn't dispatch
grondilu ok. How can I know wether a function autothreads? 07:02
I mean, apart from testing :)
moritz by looking at the signature
if a parameter accepts Mu or Junction, it does not autothread
grondilu ok. Makes sense. 07:03
perl6: package Foo { my Int $x };
p6eval niecza v15-6-gefda208: OUTPUT«Potential difficulties:␤ $x is declared but not used at /tmp/9GUkQsHh9t line 1:␤------> package Foo { my Int ⏏$x };␤␤»
..pugs, rakudo 4373f0: ( no output )
doy p6: say &defined.perl
p6eval niecza v15-6-gefda208: OUTPUT«sub defined(Any \x) { ... }␤»
..rakudo 4373f0: OUTPUT«sub defined(Any ) { ... }␤»
..pugs: OUTPUT«\:($?1 is copy) {}{Prim ([Val] -> Eval Val)}␤»
grondilu perl6: package Foo { our Int $x };
p6eval niecza v15-6-gefda208: OUTPUT«===SORRY!===␤␤Common variables are not unique definitions and may not have types at /tmp/EUF9ku4TRb line 1:␤------> package Foo { our Int $x ⏏};␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.…
..rakudo 4373f0: OUTPUT«===SORRY!===␤Cannot put a type constraint on an 'our'-scoped variable at line 1, near "};"␤»
..pugs: ( no output )
grondilu rakudo doesn't accept type constraints on our-scoped variables?? 07:04
moritz neither does niecza
grondilu it's not in spec, is it?
07:04 brrt joined
moritz I have no idea 07:05
anyway, rakudo's &defined.perl output is wrong
it's really (Mu), not (Any)
grondilu Doesn't Mu derives from Any? 07:06
moritz no, the other way round
r: say Any.^parents(:all).perl
p6eval rakudo 4373f0: OUTPUT«(Mu,)␤»
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:08
07:08 pomysl left 07:14 fhelmberger joined 07:22 grondilu left 07:23 havenn joined 07:25 tarch left, tarch joined 07:28 kaleem left 07:32 grondilu joined
grondilu I've just realised I wrote something silly earlier. Please ignore :) 07:33
07:33 grondilu left 07:41 fglock joined 07:45 kaleem joined 08:05 tarch left 08:10 havenn left 08:14 pomysl joined
moritz blug: rakudo.org/2012/04/05/no-rakudo-sta...for-april/ 08:14
08:14 vlixes left
iDzik moritz++ 08:16
brrt does proto work on rakudo? 08:37
moritz brrt: no; we install our modules with panda these days
brrt ... not the proto i was refering to :-)
moritz oh 08:38
an overloaded term
rakudo does have proto subs and regexes
(and methods)
though the proto regexes are a bit limited, you can only re-dispatch to multis immediately
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␤»
jnthn morning
moritz and you have to explicitly write 'multi sub' for now
\o jnthn
brrt .. yeah, that s the part i was refering to :-)
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.
Well, one note though
multi foo() { }; sub foo() { }
This will auto-multi the second sub.
moritz the logic for handling routine declarations is just longish, because there so many cases to consider
08:41 fgomez left
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.
I don't know the spec is clear on whether the above is OK.
Note the other way around (sub foo() { }; multi foo() { }) would always be an error.
brrt i see how it would work; but in that case just letting proto($) { ... } also generate a proto in scope would be sufficient 08:42
moritz erm, if you write a proto, there's no proto autogenerated 08:44
dalek ar: 70d774d | moritz++ | / (2 files):
add URI and LWP::Simple
moritz jnthn: would it help you if I prototyped some code for module precompilation/caching in p{5,6}? 08:49
stuff like where to look for precompiled modules, check if they are up-to-date, if not create a new compiled version etc. 08:51
08:54 fsergot joined
fsergot o/ :) 08:54
jnthn moritz: 6 is likely easier; I suspect we need to code to be in NQP in the end.
hi fsergot 08:55
iDzik hello fsergot
jnthn moritz: BUT we need to get versioned/auth'd modules back in place too
moritz: I guess that with a little care the two can be kept orthogonal though... 08:56
moritz jnthn: mostly, I think
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
(low level facility, that is)
jnthn moritz: Yes, just don't pass a GLOBALish argument to load_module 08:58
(See src/Perl6/ModuleLoader.pm 08:59
)
moritz: Actually this is used by loading in pre-compilation
Because it just serializes its view of GLOBAL.
So the merge is done once at compilation time.
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:00
moritz I can imagine two possible approaches of cache management 09:01
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:02
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:03
that sounds more attractive to me, because it means the meta data is less likely to go out of sync 09:04
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
jnthn: no hurry, I'm still brainstorming :-)
09:05 dima joined
moritz or, more accurately, writing down what I've brainstormed earlier 09:05
masak good antenoon, #perl6 09:11
iDzik good prenoon masak
09:12 Teratogen left, Teratogen joined
Teratogen what the 09:12
masak someone tell me: why do we have @=data, when there's $=data.lines ? 09:13
moritz because nobody has removed it yet 09:15
masak I was thinking maybe I had misundersttod the semantics of @=data. 09:17
misunderstood*
dalek ecs: 1eb9da4 | moritz++ | S28-special-names.pod:
[S28] remove @=data, which is already available as $=data.lines

  masak++
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.
moritz++ # ranting => action 09:18
moritz it's not quite noon yet, and I've already wielded the spec sledge hammer. Yay.
timotimo: re irclog.perlgeek.de/perl6/2012-04-04#i_5397162, junction invocations simply aren't optimized 09:25
09:25 pernatiy left
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:26
masak lunch & 09:36
jnthn aye, also the auto-threader is dog slow
moritz that's what I meant with "junction invocations"; just very badly phrased :-)
jnthn moritz: The "half-load" thing will get weird if we actually load the PBC file 09:37
or .pir file
moritz jnthn: how so? because phasers fire?
jnthn moritz: Because load_bytecode automatically causes the deserialization and mainline running 09:38
moritz hm
jnthn moritz: So by then it's "too late"
moritz hm
jnthn There's always the option of keeping a file alongside the .pir or .pbc that supplies the "what's known" 09:39
Like, the sha1 of the source it came from
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
jnthn: right, that's probably the workaround to use 09:40
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.
jnthn *nod* 09:44
09:58 PacoAir joined, fsergot left 10:04 mtk left 10:16 scott___ left 10:36 agentzh joined, Araq joined 10:38 Araq left 10:41 NamelessTee joined 10:42 kaleem left 11:04 benabik left
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
what do you think?
iDzik of course 11:10
what's the alternative?
11:10 [particle] left
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:11
11:11 iDzik is now known as tadizk, tadizk is now known as tadzik
brrt the alternative is rolling one's own 11:12
masak only roll your own if you need it.
brrt i'd think so
tadzik what will BioPerl ranges do that the standard ones do not? 11:13
brrt really good question
tadzik YAGNI, probably
brrt i'm going to check that out as we seapk
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.
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␤2012-02-29␤2012-03-01␤2012-03-02␤»
brrt a range is a role, or a class, or an interface?
perl6 is big
masak r: say (1..5).^name
p6eval rakudo 4373f0: OUTPUT«Range␤»
masak r: say (1..5).WHAT.^name
p6eval rakudo 4373f0: OUTPUT«Range␤»
masak hm.
r: say (1..5).HOW.^name
p6eval rakudo 4373f0: OUTPUT«Method 'dispatch:<.^>' not found for invocant of class 'Perl6::Metamodel::ClassHOW'␤ in block <anon> at /tmp/i8K0JKeScb:1␤␤»
masak r: say (1..5).HOW.WHAT
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␤␤»
masak anyway... :) 11:15
brrt :-)
masak ClassHOW. so it's a class.
you can see how it's implemented in src/core in Rakudo.
11:15 ingy left
brrt p6: say (1..5).WHAT 11:15
p6eval pugs: OUTPUT«Array␤»
..rakudo 4373f0, niecza v15-6-gefda208: OUTPUT«Range()␤»
masak it's pure Perl 6 code.
brrt next thing, reading the source code is going to be a prefered way to learn perl6 11:16
masak here: github.com/rakudo/rakudo/blob/nom/s...e/Range.pm
brrt wait that might not be bad
masak absolutely. if you have time, read as much of src/core as you can.
11:17 havenn joined
masak it will only make your Perl 6 stronger. 11:17
masak wishes he had more time for that :)
brrt too
tadzik wonders if Range should be parametrized 11:18
brrt oh, btw
11:18 havenn left
brrt type coercion is done via the as statement now? 11:18
11:18 shachaf left, sirhc left
masak tadzik: I wish someone would just impose a (small, pragmatic) policy on container types and parametrization. 11:19
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.
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
masak brrt: type coercion is done like this: my Int(Cool) $coerced-to-int;
tadzik: ooh 11:20
r: say $Inf
p6eval rakudo 4373f0: OUTPUT«Inf␤»
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)
masak hm.
r: .say for 10.."20" 11:21
p6eval rakudo 4373f0: OUTPUT«10␤11␤12␤13␤14␤15␤16␤17␤18␤19␤20␤»
tadzik eek
masak I think that's kosher (and by spec).
(and Perlish)
11:21 havenn joined
brrt r: .say for 10.."foobar" 11:21
tadzik I think that's unsane :)
p6eval rakudo 4373f0: OUTPUT«(timeout)» 11:22
brrt oops
it is unsane
tadzik as in: beyond sanity, and yet not insane :)
masak brrt: congrats, your first infinite loop :)
11:22 ingy joined
masak ingy! \o/ 11:22
tadzik \o/
brrt \o/
i was refering to this actually: multi method pick(Cool $n as Int) { 11:23
11:23 havenn left 11:24 havenn joined 11:26 havenn left 11:27 ingy left
jnthn masak: Hash is a class in nom. 11:32
11:32 ingy joined
jnthn masak: So, no inconsistency there :) 11:32
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…
..rakudo 4373f0: OUTPUT«10.."foobar"␤»
..pugs: OUTPUT«␤»
colomon perl6: say 10..0
p6eval rakudo 4373f0, niecza v15-6-gefda208: OUTPUT«10..0␤»
..pugs: OUTPUT«␤»
11:35 shachaf joined 11:38 avar left 11:39 sirhc joined
masak jnthn: oh, phew. 11:41
I must've been thinking of ng/b or something, then.
11:41 benabik joined
jnthn Maybe ng 11:42
moritz r: say Hash.HOW
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␤␤»
masak b: say Hash.HOW
p6eval b 922500: ( no output )
masak oh, b.
how I don't miss you.
jnthn :)
moritz b: pir::say(pir::typeof__SP(Hash.HOW))
p6eval b 922500: OUTPUT«RoleHOW␤»
masak moritz++ 11:43
benabik jnthn: load_bytecode__PS returns a PackfileView you can manipulate instead of having it automatically fire :init and :mian
fire :init and return :main I suppose
jnthn benabik: Well, it's :load it fires in this case, not :init and :main
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
dalek p: 55fe6c6 | moritz++ | tools/build/PARROT_REVISION:
bump parrot revision to get MacOS build fixes
11:47
kudo/nom: 2bf52d5 | moritz++ | tools/build/NQP_REVISION:
bump NQP revision
11:48
arnsholt moritz: Rakudo built fine, but I get an error in make test 11:51
It tries to run t/02-embed, but that doesn't actually exist 11:52
moritz arnsholt: ah, might need a Makefile update
arnsholt Yeah, it certainly looks like it
(Spectesting now, but I don't imagine that'll turn up anything) 11:54
11:58 NamelessTee left
jnthn d'oh, I missed the Makefile reference when I removed that file. 11:58
moritz no worry, I can fix it 11:59
11:59 envi_ left, havenn joined
jnthn Thanks :) 11:59
jnthn is currently catching up with $dayjob stuff 12:00
dalek kudo/nom: e047fb4 | moritz++ | tools/build/Makefile.in:
t/02-embed is gone
12:01 havenn left 12:02 xinming left 12:04 xinming joined, da2ce7 joined 12:13 havenn joined 12:14 havenn left
dalek kudo/nom: be058f9 | (Carl Mäsak)++ | src/core/Range.pm:
[src/core/Range.pm] removed stale comment
12:14
moritz p6: say (1..*-1).WHAT 12:16
p6eval pugs: OUTPUT«(timeout)» 12:17
..rakudo 4373f0: OUTPUT«WhateverCode()␤»
..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…
moritz n: say <a b c d e f>[1..*-1]
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…
jnthn r: say <a b c d e f>[1..*-1]
p6eval rakudo 4373f0: OUTPUT«b c d e f␤»
jnthn nice :)
Teratogen p6: say 1..Inf; 12:18
muahahaha
MUAHAHAHA
p6eval pugs: OUTPUT«Stack space overflow: current size 8388608 bytes.␤Use `+RTS -Ksize -RTS' to increase it.␤»
..rakudo 4373f0, niecza v15-6-gefda208: OUTPUT«1..Inf␤»
Teratogen yowch!
it slurped all of memory!
moritz somehow I still feel that it's weird that 1..* and 1..*-1 return the same thing when used in a subscript
tadzik yeah 12:19
jnthn Teratogen: Mature... Also, I suspect the box has more than 8MB of RAM. :P
moritz though not much more :-)
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␤»
..rakudo 4373f0: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&fork' called (lines 1, 1)␤»
..niecza v15-6-gefda208: OUTPUT«===SORRY!===␤␤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…
Teratogen what the
fork bomb doesn't work? =(
tadzik how suprising
masak Teratogen: please don't do this.
Teratogen morning masak!
masak Teratogen: we like you, and we know you get bored sometimes. 12:23
but no-one likes a fork bomb, whether it works or not.
you can do better.
Teratogen ok =(
12:23 tokuhirom joined
bbkr hint: you can fork-bomb using NativeCall 12:24
moritz BSD::Resource++ 12:25
p6: say $*IN.slurp.comb(/e/).elems 12:28
p6eval rakudo 4373f0, niecza v15-6-gefda208: OUTPUT«88␤»
..pugs: OUTPUT«*** Unsafe function 'slurp' called under safe mode␤ at /tmp/pB9mrJkpiH line 1, column 5 - line 2, column 1␤»
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)␤»
masak how come lines() defaults to $*IN, but slurp() doesn't?
moritz not $*IN, $*ARGS 12:37
... and I don't know
masak they feel somehow analogous. 12:38
moritz agreed
masak patches the spec 12:39
moritz r: slurp($*ARGS).comb(/e/).elems.say
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␤ …
moritz r: slurp($*ARGFILES).comb(/e/).elems.say
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␤␤»
masak moritz: $*ARGFILES, according to S32/IO 12:40
oh, and S32/IO already has it that way. it's just that Rakudo doesn't implement it. 12:41
n: say slurp.comb(/e/).elems
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
masak submits rakudo todo-ticket 12:43
moritz masak: now spectesting a fix
masak moritz++ 12:44
rt.perl.org/rt3//Public/Bug/Displa...?id=112276 12:46
12:46 havenn joined 12:48 havenn left 12:52 havenn joined 12:53 havenn left 12:54 havenn joined
[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:57 havenn left
masak another LHF. 12:58
13:01 sftp joined, xinming_ joined 13:03 xinming left 13:05 mtk joined 13:06 [particle] joined 13:12 pernatiy left 13:13 tokuhirom left 13:14 thou joined 13:16 Trashlord left 13:24 pernatiy joined 13:35 spider-mario joined 13:38 avar joined, avar left, avar joined 13:50 Juerd left, Juerd joined 13:54 BruceZu left 14:31 Trashlord joined
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
14:39 kaare_ joined
moritz (: :) 14:40
masak jnthn++ 14:41
jnthn hah, found some more :) 14:45
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
or perhaps jnthn++
both?
moritz not only to the test suite 14:47
masak to human progress.
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
and then it's quite easy to test for
14:48 amkrankruleuen joined
moritz and introducing a new exception type is quite easy right now 14:48
jnthn Also that :)
Well, there's my little bit of test suite wrangling. :)
er
s/test sutie/ticket queueue/ 14:49
*suite
14:53 alester joined
moritz r: my class X::Syntax::Extension::Category does X::Syntax { has $.category } 14:54
p6eval rakudo 4373f0: ( no output )
moritz oh, syntax error shadowed by something else
14:54 SHODAN joined
[Coke] p: given 1 { when 1 { say "EEK!" } } 14:58
p6eval pugs: OUTPUT«EEK!␤»
15:00 fsergot joined, fsergot left, havenn joined
dalek kudo/nom: 8dada65 | masak++ | src/core/Range.pm:
[src/core/Range.pm] remove method

It had no spectest coverage, and I don't much agree with its semantics.
15:01
kudo/nom: 34ac9bf | masak++ | src/core/Routine.pm:
[src/core/Routine.pm] add a clarifying comment
15:02 wtw left, havenn left
masak re Range ~~ Range. there are two streams of thought there. 15:03
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.
moritz fwiw S32-exceptions/misc.t relies on the current Range ~~ Range semantics
(or old semantics?) 15:04
masak huh -- I got a PASS on the spectests.
well, feel free to revert if that's the case.
moritz it's a false positive right now
15:04 havenn joined
moritz the test is basically $somexception.range ~~ 0..0 15:04
jnthn S03 says nothing of the behavior that masak just removed.
moritz now it passes because $somexception.range numifies to 0 15:05
jnthn Presumably === or eqv could be used instead of smartmatching for this.
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.
I like this way better.
moritz but 1..1 would also numify to 0, and would be a false positive
masak the behavior is harder to reproduce in some other way.
and it feels more like, say, smartmatching signatures.
masak decommutes
moritz masak: the proper approach is the replace the old implementation by an implementation of the new feature, not just delete it 15:06
dalek p: aabbd0a | jnthn++ | src/6model/reprs/NativeCall.c:
Fix pre-compilation of modules that use NativeCall.
15:08
kudo/nom: c62b90d | moritz++ | src/core/Exception.pm:
throw typed exception for syntax extensions to illegal categories (RT #82984)
ast: fd201d9 | moritz++ | S32-exceptions/misc.t:
RT #82984
15:09
p: f3ec4c5 | jnthn++ | docs/serialization_format.markdown:
Add some serialization format docs.
15:10
15:10 kaleem joined 15:22 birdwind1pbird joined 15:29 dukeleto left
[Coke] for each(("T", "E", 5) ; (10, 11, 5)) -> $digit, $expected { 15:29
(that's 3 loop iterations, aye?)
dalek ast: 2ac8afb | moritz++ | S14-roles/mixin.t:
RT #79866, mixing a postcircumfix:<( )> into an Int
15:33
brrt p6: for each("T", "E", 5 ; (10, 11, 5)) -> $digit, $exptected { say $digit, $expected; } 15:34
p6eval niecza v15-6-gefda208: OUTPUT«===SORRY!===␤␤Slicel lists are NYI at /tmp/DWtMljyc68 line 1:␤------> for each("T", "E", 5 ; (10, 11, 5))⏏ -> $digit, $exptected { say $digit, $ex␤␤Variable $expected is not predeclared at /tmp/DWtMljyc68 line 1:␤------>…
..pugs: OUTPUT«*** ␤ Unexpected ";"␤ expecting "::"␤ Variable "$expected" requires predeclaration or explicit package name␤ at /tmp/CyDs4B0QLx line 1, column 82␤»
..rakudo 4373f0: OUTPUT«===SORRY!===␤Variable $expected is not declared␤at /tmp/T25DDeLLkH:1␤»
moritz [Coke]: erm, if you s/each/zip/ it might work that way
[Coke] moritz: that's from a test in S04-statements/given.t 15:35
brrt: typo.
moritz: the test says it's # from apocalypse 4, and niecza & rakudo both skip itl 15:36
but I think it's screwing up the number of tests.
TimToady looks to be something from before we had Z 15:37
moritz [Coke]: feel fre to remove it 15:39
*free
brrt for each("T", "E", 5 ; (10, 11, 5)) -> $digit, $expected { say $digit, $expected; }
TimToady it's also unrelated to the current conjectured each() at S09:1067
*currently 15:40
brrt p6: for each("T", "E", 5 ; (10, 11, 5)) -> $digit, $expected { say $digit, $expected; }
p6eval rakudo 4373f0: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&each' called (line 1)␤»
..niecza v15-6-gefda208: OUTPUT«===SORRY!===␤␤Slicel lists are NYI at /tmp/0ibN0u8MaI line 1:␤------> for each("T", "E", 5 ; (10, 11, 5))⏏ -> $digit, $expected { say $digit, $exp␤␤Undeclared routine:␤ 'each' used at line 1␤␤Unhandled exception: Check f…
..pugs: OUTPUT«TE␤510␤»
brrt for zip("T", "E", 5 ; (10, 11, 5)) -> $digit, $expected { say $digit, $expected; }
moritz p6: for zip("T", "E", 5 ; (10, 11, 5)) -> $digit, $expected { say $digit, $expected; } 15:41
p6eval rakudo 4373f0: OUTPUT«T10␤E11␤55␤»
..pugs: OUTPUT«TE510␤»
..niecza v15-6-gefda208: OUTPUT«===SORRY!===␤␤Slicel lists are NYI at /tmp/buDlnFgGO0 line 1:␤------> for zip("T", "E", 5 ; (10, 11, 5))⏏ -> $digit, $expected { say $digit, $exp␤␤Undeclared routine:␤ 'zip' used at line 1␤␤Unhandled exception: Check fai…
moritz rakudo++
dalek ast: 33dfaa3 | moritz++ | S14-roles/mixin.t:
RT #79868, mixing into a type object
15:42
[Coke] niecza just exploded on me with: Unhandled exception: System.Exception: Unhandled nam operator command_qx 15:43
(when trying to run that test file.)
moritz I thought qx was implemented :/
dalek ast: d0c47d3 | coke++ | S04-statements/given.t:
remove crufty test
15:45
15:47 havenn left, Psyche^ joined
dalek ast: cc341e3 | moritz++ | S06-signature/arity.t:
RT #111646, slurpies => infinite .count
15:48
15:48 Patterner left, Psyche^ is now known as Patterner
moritz r: class A { sub f { has $.x } }; say A.new(x => 42).x 15:49
p6eval rakudo 4373f0: OUTPUT«42␤»
moritz is that how it should be? 15:50
std: class A { sub f { has $.x } }; say A.new(x => 42).x
p6eval std 1ad3292: OUTPUT«ok 00:00 42m␤»
moritz std: has $.x
p6eval std 1ad3292: OUTPUT«Potential difficulties:␤ 'has' declaration outside of class at /tmp/lAfyKweRHw line 1:␤------> has⏏ $.x␤ok 00:00 41m␤»
moritz p6: class A { sub f { has $.x } }; say A.new(x => 42).x 15:51
p6eval pugs, rakudo 4373f0: OUTPUT«42␤»
..niecza v15-6-gefda208: OUTPUT«===SORRY!===␤␤Attribute $!x declared outside of any class at /tmp/w5b7OgIfyn line 1:␤------> class A { sub f { has $.x ⏏} }; say A.new(x => 42).x␤␤Potential difficulties:␤ &f is declared but not used at /tmp/w5b7OgIfyn …
arnsholt I get two failures in dash-e.t in my newly refunctional Rakudo 15:52
moritz arnsholt: what's your locale?
arnsholt One seems to be a Unicode issue, the other I'm not sure about
15:52 agentzh left
arnsholt Good point 15:52
It's undefined, so C is the default, no? 15:53
moritz yes
and i guess it goes away when you switch to an UTF-8 locale
arnsholt LC_CTYPE is UTF-8, though
moritz but that only affects collecations 15:54
(ie sorting)
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
moritz ah, if I set LC_ALL=C, I get two test failures too 15:56
arnsholt Doesn't work though =/
moritz is that locale available?
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
moritz TimToady: so you rather side with niecza?
15:57 colomon left
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
15:57 kaleem left
moritz +1 15:57
TimToady seems like a matter of setting the appropriate contextual somewhere
arnsholt moritz: locale -a says it's there, but doesn't work 15:58
But no matter
It's an issue with my local setup, not Rakudo
jnthn blug: 6guts.wordpress.com/2012/04/05/back...coming-up/ 15:59
TimToady: The Rakudo behavior is simply because $*PACKAGE, the current meta-object, is contextual.
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
r: has $*x
p6eval rakudo 4373f0: OUTPUT«===SORRY!===␤You cannot declare an attribute here; maybe you'd like a class or a role?␤at /tmp/8kRvJ6Ou9s:1␤»
brrt p6: sub foo(Int *@a) { say @a; } foo(1, 3, 9);
p6eval rakudo 4373f0: OUTPUT«===SORRY!===␤Confused␤at /tmp/4cSW6ITb1r:1␤»
..pugs: OUTPUT«139␤»
..niecza v15-6-gefda208: OUTPUT«===SORRY!===␤␤Strange text after block (missing comma, semicolon, comment marker?) at /tmp/8FD5nGygLy line 1:␤------> sub foo(Int *@a) { say @a; }⏏ foo(1, 3, 9);␤␤Parse failed␤␤»
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␤␤»
..pugs, niecza v15-6-gefda208: OUTPUT«27␤»
brrt what rakudo says
TimToady that's...bizarre... 16:02
moritz the error message, yes
jnthn Somehow the Rakudo error misses the fact that it expects Positional[Int] but got an untyped array.
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
TimToady or we could do what the user expects/deserves, which is to slow down their code by doing the run-time check 16:04
brrt cool... anyway, i have to go now 16:05
moritz does that mean eagerly reifying the slurpy?
or check-as-we-reify?
TimToady or check the return type of everything in the parcel, if we know it 16:06
16:07 brrt left
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
moritz TimToady: but that only covers only this specific case
TimToady it covers anything that --> Int
yes, this is a slippery slope :) 16:08
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
dalek ast: 1c332ba | coke++ | S04-statements/given.t:
pugs fudge
moritz and problematic for (1, 2.4, 3e4) # do we figure it out's Parcel[Real]?
dalek gs.hs/so: d38cf19 | coke++ | t/spectest.data:
run (fudged) test
sorear good * #perl6 16:11
masak sorear! \o/
TimToady moritz: maybe that's the right thing to do, and will give the bestest error messages on failure
16:11 da2ce7 left
jnthn OK, dinner time...bbl o/ 16:11
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.
TimToady but it does drive things more toward generics solutions in order to get things like List[Int] 16:14
masak &
TimToady and things like .map: {.Int} don't really know that they're --> List[Int] currently
16:15 sudokode joined, pernatiy left
TimToady unless we do a lot more type inferencing... 16:16
in which case they still don't do it currently :P
16:16 simcop2387 left 16:18 simcop2387 joined 16:19 fglock_ joined
TimToady and then there's Int(Cool) *slurpy 16:20
which probably needs to run at reification time anyway
Juerd [Coke]: Your pugs instance on feather1 is using too much memory. Could you look into that?
[Coke]: I've killed the worst one by the way; had to.
masak hah! just as I thought, TheDamian replied to lichtkind with $answer ~~ Awesome ;)
Juerd masak: Where?
masak p6l. 16:21
masak afk, really this time
[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
sorear std ;
std: ;
p6eval std 1ad3292: OUTPUT«ok 00:00 40m␤»
[Coke] it's possible someone added a new test that pugs doesn't handle well.
Juerd [Coke]: I see
[Coke] (I thought it was limited. checking.) c
Juerd Haven't noticed issues like today's before.
[Coke] (crap, I committed spectest changes to the wrong branch.)
sorear moritz: ping 16:26
Juerd Load was at 18 when I decided to kill it
It had reached 20 by the time I could actually run top :)
TimToady sorear: if you haven't seen it, irclog.perlgeek.de/perl6/2012-04-05#i_5397853 16:27
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.
sorear TimToady: I was under the impression that moritz meant "evalbot rebuild $foo does not work"
but apparently neither do timed rebuilds
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 :)
[Coke] MLEHMANN--
Juerd What now?
Does he do P6 stuff?
arnsholt moritz: Was it you who had gotten Zavolaj working on OS X? 16:33
sorear hmm 16:35
no crontabs on feather1 for this
maybe it's triggered from 3?
Juerd Have you checked user crontabs as well? 16:36
sorear yes
all of them
16:36 fgomez joined, fgomez left, fgomez joined
sorear sudo + "There is no privacy" = :> 16:36
Juerd Yea. I should still migrate my IRC away from feather
Can't have a decent private conversation, in theory. In practice though I tend to trust you guys :) 16:37
TimToady it's the people spying on us that you can't trust :) 16:38
Juerd If only we know who they were.
TimToady after all, Open Source is next door to anarchy :)
Juerd knew, are? English is hard.
sjohnson feather eh...
Juerd TimToady: Anarchy, atheism and epidemics. 16:39
TimToady I'd probably use knew/were there
sorear /usr/local/bin/incredibly_ugly_hack_to_restart_apache :D
TimToady but knew/are is fine
Juerd Oh, that's still in place? :) 16:40
sorear ya in /etc/crontab on f1
feather0 = dom0?
Juerd Yes. But feather0 no longer exists. 16:41
TimToady an incredibly ugly hack would be to restart apache by deinstalling/reinstalling it
sorear another crontab /etc/fossil
Juerd feather[123] were migrated to our shared virtual server platform.
There's no dedicated feather hardware anymore.
TimToady: That's actually possible without killing the process... 16:42
TimToady Juerd: nothing a reboot or two won't fix
Juerd echo '* */3 * * * root reboot' >> /etc/crontab 16:43
Hm, no, that'd be a really stupid crontab.
echo '0 */3 * * * root reboot' >> /etc/crontab
geekosaur was gonna say, reboot once a minute is not so helpful 16:44
16:44 wolfman2000 left
Juerd geekosaur: The first one is because it's needed. The other 59 are just to make sure. 16:44
16:44 [particle]1 joined
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.
TimToady since that's the whole point of this :)
geekosaur ("apachectl graceful" not good enough?)
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
geekosaur of course if ti won't go gracefully, apachectl stop / start 16:46
Juerd geekosaur: No, back when this probablem existed, sometimes a kill -9 was needed.
probablem? Problem.
sorear I cannot find any evidence of an automated rebuild system utilizing feather1
I'm going to hold off until moritz++ is available 16:47
colomon sorear! \o/
sorear [Coke]: what did mlehmann do to you today>
Juerd Hm, why would anyone hide something like that?
sorear colomon!
colomon: how was ambercon?
colomon: \o/
TimToady and did you do any shadow-walking?
sjohnson three cheers !
colomon sorear: ambercon was terrific. also somewhat exhausting. 16:48
16:48 [particle] left
TimToady walking will do that 16:49
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
colomon TimToady's assumption is very, very solid 16:51
s/read/ran/
16:53 amkrankruleuen left
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:53
16:54 fgomez left 16:55 fgomez joined
[Coke] sorear: he was very grumpy on/about rt.cpan.org 17:01
17:06 gabriel_ joined, gabriel_ left, gabriel1406 joined 17:07 gabriel1406 left 17:08 gabriel1406 joined 17:09 birdwindupbird left
sorear [Coke]: ah, he's always been like that 17:10
17:11 gabriel1406 left
dalek ecs: f0f29e7 | larry++ | S03-operators.pod:
define smartmatch between two ranges

  masak++ is correct that this is difficult to write any other way.
17:17
sorear but does it have any() or all() semantics? 17:19
TimToady a Range is not a list 17:20
but it's all on the bounds, modulo ^ constraints
17:20 Timbus left
sorear how would you test if two ranges have nonempty intersectio? 17:21
spider-mario regarding AST objects, 17:22
how can they be manipulated?
they have methods: BUILD, incarnate and is_quasi_ast 17:23
but I don’t know what they do
TimToady p6: my $a = 1..3; my $b = 2..4; say $a.bounds.one ~~ $b # first approx
p6eval pugs: OUTPUT«*** No such method in class Array: "&bounds"␤ at /tmp/PAze4NLHDe line 1, column 33 - line 2, column 1␤»
..niecza v15-6-gefda208: OUTPUT«one(Bool::False, Bool::True)␤»
..rakudo 4373f0: OUTPUT«one(True, True)␤»
TimToady p6: my $a = 1..3; my $b = 2..4; say so $a.bounds.one ~~ $b # first approx
p6eval rakudo 4373f0: OUTPUT«False␤»
..pugs: OUTPUT«*** No such subroutine: "&so"␤ at /tmp/kmxmnQNfAm line 1, column 33 - line 2, column 1␤»
..niecza v15-6-gefda208: OUTPUT«True␤»
17:24 Timbus joined
[Coke] wonders how many people hacking on perl6 things had web in HS. (Not I) 17:27
17:27 havenn joined
[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
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␤»
..rakudo 4373f0: OUTPUT«Could not find symbol 'IO::&Readable'␤ in block <anon> at /tmp/KViCZ3eVpu:1␤␤»
..niecza v15-6-gefda208: OUTPUT«===SORRY!===␤␤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…
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
or just define the setops on Ranges :)
17:31 xenu joined
TimToady and $a ∩ $b would return an empty range or set if there was no overlap 17:32
sets of Reals, yum 17:33
not clear what kind of beastie $a ∪ $b returns though, if there's no overlap. set($a,$b) is a bit "problemantic" 17:35
should .elems return 2, or Inf, or the number of (unique?) integers generated by iterating $a and then $b 17:36
17:36 havenn left
TimToady I'm inclined to think that sets of reals should always have Inf members, unless empty 17:37
well, some alephish kind of Inf 17:38
I rather suspect that all transcendentals look like Inf to p6 for now 17:39
17:40 [particle]1 is now known as [particle]
TimToady er, s/transcendental/"ordinals"/ 17:41
TimToady is in over his head, as usual 17:42
I think I meant "transfinites"
sorear TimToady: .one ~~ won't work, consider (1, 100) \intersect (10, 20) 17:43
17:43 birdwind1pbird left
sorear Infinite cardinals. 17:44
TimToady indeed, which is why I was haring off after some new operator or other
sorear Ordinals are things that let you index into the collection of all reals; they don't exist constructively
(uncountable ones, at least) 17:45
17:45 havenn joined
TimToady thinks of math concepts more vigorously than rigorously... 17:46
but I think I was assuming that the .one case is after you've determined $a !~~ $b and $b !~~ $a 17:47
but it's still bogus wrt ^-ness 17:48
but it would be nice if sets of ranges behaved in a sensible and/or useful fashion 17:49
17:51 havenn left
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!
wait
gah I screwed that up
TimToady you must not be from Caltech
sjohnson Calcutta Institute of Technology
TimToady but who's antidifferentiating? 17:52
Teratogen it's e to the x du dx / e to the u du /
who remembers their Calculus Catechism?
that raises an interesting question 17:54
does Perl 6 do symbolic math?
sorear No.
TimToady not as generally conceived
arnsholt I think that belongs in a module
17:55 Araq joined
Teratogen does Perl 6 have bigint and bigfloat built in? Or are those modules too? 17:55
TimToady Int is bigint
Teratogen cool!
TimToady there's no bigfloat support
sorear FatRat is bigrat
TimToady all rats are pretty fat to begin with :)
17:56 leprevost joined
Teratogen they eat rat in China. 17:56
Of course, they eat almost everything in China.
Araq I think all rats start small and then grow on you
sorear arnsholt: actually I think that belongs in a system(...)
o/ Araq !
sorear eyes Teratogen suspiciously
Araq hi sorear
arnsholt sorear: Or calling an external program, certainly 17:57
But life's always easier when I don't have to deal with other people^Wlanguages, I find =)
sorear arnsholt: symbolic math is not worth reinventing, imo
differentiation isn't so bad
but Risch? no just no
arnsholt True, true 17:58
Araq so how is bigint implemented? wrapper around GMP?
TimToady unspecified 17:59
dalek ecs: 46a5991 | (Herbert Breunung)++ | S02-bits.pod:
removing "antiquities" regarding Pod, applying patch by damian
ecs: a65c854 | (Herbert Breunung)++ | S03-operators.pod:
Merge branch 'master' of github.com/perl6/specs
sorear depends on the compiler
Araq ok, ok, how does rakudo implement it?
sorear embedded libtommath
GMP isn't portable enough, and is also license incompatible
TimToady I don't think any of our implementations use gmp...what sorear++ said
sorear pugs does 18:00
TimToady it doesn't get that free from Haskell?
or Haskell uses gmp?
sorear pugs is GHC specific, and GHC uses gmp
spider-mario ghc uses gmp
sorear or used to
spider-mario but haskell implementations are free to use whatever they want
sorear they might have left in the five years since I hacked haskell
spider-mario sorear : gmp is still used 18:01
TimToady that's one way to avoid success at any cost...
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
sorear yeah
spider-mario (perl :p)
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
spider-mario some time ago, GHC’s “evil mangler” was written in Perl
but the evil mangler is gone nowadays
sorear do you have a Glorious Mangler now? 18:04
spider-mario darcs.haskell.org/ghc/docs/comm/the...ngler.html
geekosaur mangler went away when we started generating native asembly code
moritz sorear: pong 18:05
sorear: there is indeed no timed rebuilds yet. I planned to put it back, but haven't gotten a round tuit yet
spider-mario there’s also a llvm backend but I don’t know what it’s worth now
if I recall correctly, it was quite competitive with the asm backend when it was introduced 18:06
I don’t know how the situation evolved
moritz sorear: I've written sync.pl, which needs to be called after the rebuild
sorear geekosaur: erm, you mean when -fno-via-C became available? 18:07
moritz: nod
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
lichtkind o/ 18:08
TimToady: we found out that 2 or 3 callframe methodes are underspecced 18:09
arnsholt moritz: Are you on OS X, or am I misremembering? 18:10
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:11
lichtkind hai cognominal_ 18:13
18:15 fgomez left
moritz arnsholt: you are misremembering 18:17
arnsholt: I'm on linux. I needed to tweak LD_LIBRARY_PATH or whatever it is called
r: class A is Exception { }; die A.new 18:18
p6eval rakudo 4373f0: OUTPUT«␤ in block <anon> at /tmp/rfl4v3pBew:1␤␤»
moritz std: class A { sub f { has $.x } } 18:21
p6eval std 1ad3292: OUTPUT«ok 00:00 41m␤»
moritz n: class A { sub f { has $.x } } 18:22
p6eval niecza v15-6-gefda208: OUTPUT«===SORRY!===␤␤Attribute $!x declared outside of any class at /tmp/tuJ20Iq7DV line 1:␤------> class A { sub f { has $.x ⏏} }␤␤Potential difficulties:␤ &f is declared but not used at /tmp/tuJ20Iq7DV line 1:␤------> c…
cognominal_ hai, lichtkind 18:23
lichtkind cognominal_: good to see you again (i know its a phrase) 18:27
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
Araq so if libtom is part of rakudo's core, how does rakudo deals with finalization? 18:31
i.e. how is mp_clear() invoked? 18:34
18:36 vlixes joined
moritz Araq: whenver an Int object is GCed 18:37
TimToady recursive grep finds zillions of calls to it
18:38 fgomez joined
TimToady but the ones you're interested in are probably the ones in ./nqp/src/6model/reprs/P6bigint.c 18:40
geekosaur sorear, it was and is spelled -fasm 18:43
(sorry, my phone interview finally happened... was supposed to have started at *:00 not *:10) 18:44
-fvia-C registerised required the evil mangler; -fasm and -fllvm do not
spider-mario -fvia-C unregistered either but it was slower, right? 18:48
(the evil mangler just improved perfarmance)
performance*
Araq ah speaking of which; what algorithm's does parrot's GC use? 18:49
*algorithms
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
Araq mark&sweep? 18:50
geekosaur ...and it was more or less useless on x86, because not enough registers 18:52
it worked best on sparc and other older architectures
18:53 acrussell joined
Araq never mind, I found the right file 18:54
18:54 acrussell left, fgomez left, samlh joined, fhelmberger left
TimToady Araq++ 18:54
sjohnson TimToady: i was wondering.. do you use (or like) GNU Screen? 18:56
18:59 brrt joined 19:01 leprevost left
TimToady um, screen is only barely if at all a GNU thing, considering the manpage says "4th Berkeley Distribution" 19:02
spider-mario r: while True -> $x {say $x; last} 19:03
p6eval rakudo 4373f0: OUTPUT«True␤»
spider-mario (nevermind)
+' '
TimToady just because something uses the GPL doesn't make it GNU
cognominal_ perl is a camel not a gnu.
TimToady but to answer your question, I'm typing on irssi through screen right now 19:05
(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
TimToady so has patch, but they didn't write that either :)
doy (:
19:07 havenn joined 19:08 birdwindupbird joined
TimToady and in any case, I'd never capitalize it "Screen" 19:09
doy gnu does www.gnu.org/software/screen/ 19:10
(:
TimToady only in the title
geekosaur doy, gnu maintains it these days but it's still mostly the original BSD screen
19:12 havenn left
Teratogen gnu perl 19:13
lichtkind just updated www.perlfoundation.org/perl6/index....smartmatch 19:17
[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:18
dalek ast: c6607d0 | moritz++ | S02-types/type.t:
refudge type.t for rakudo
19:19
sorear sjohnson: unsolicited plug for tmux 19:21
sjohnson TimToady: i do the same thing too, except with a different client, weechat
doy sorear++ tmux++
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
TimToady: www.gnu.org/software/screen/
:3
masak TimToady++ # specs like I want :)
sjohnson maybe they took over the project, and stamped their GNU namesake on it
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␤␤»
sjohnson oh, sorry, looks like doy pasted that URL already. oopsies 19:24
TimToady sorear only claimed ey was *like* a curmudgeonly only man
spider-mario hm, I’m getting “Unexpected named parameter 'help' passed” 19:25
Araq when is gc_gms_write_barrier() called?
spider-mario but my MAIN declaration is
sub MAIN(Str $input = '-') {
masak spider-mario: that sounds odd. can you reproduce this error with a really small script? 19:29
jnthn masak: oooh! a macro null PMC access! ^^ 19:30
masak oh noes :)
it has a sub in it...
and an unquote. that's not even implemented yet.
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 :)
spider-mario masak : ompldr.org/vZDl0OQ/main.pl
jnthn cognominal_: Rakudo's REPL had the same issue before...it's GLOBAL that vanished beneath it iirc.
spider-mario Unexpected named parameter 'help' passed
in sub MAIN at ./test.pl:3
in block <anon> at ./test.pl:1
masak samlh: I think you would still get the regular &say with that one.
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.
spider-mario that script has a named parameter
masak spider-mario: I have SPb-172-gbd6fdeb built here, and it runs fine when I run it with no arguments. 19:33
spider-mario: says "I was passed -." just as expected. 19:34
spider-mario no argument causes no problem
but try passing --help
it should print USAGE, should it not?
(with a generated default)
masak right, then it fails.
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
masak I *think* it should print USAGE, yes.
samlh: I'm glad you're thinking along these lines. we sort of need to evolve patterns of how to code with macros. 19:35
lichtkind is there a char to forse pair context? 19:38
or is pair gone? 19:40
i mean the context op
it looks like 19:42
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␤»
samlh that is, shouldn't it be F f instead
masak lichtkind: what is "pair context"?
lichtkind masak: you know if pair is gone as context op?
masak .oO( things just turned really pair-shaped )
brrt p6: say <12 93 22>.^name
p6eval rakudo 4373f0, niecza v15-6-gefda208: OUTPUT«Parcel␤»
..pugs: OUTPUT«Array␤»
masak lichtkind: what is "pair context"? 19:46
brrt which one is right?
jnthn Parcel
brrt i thought there was just the 'pair operator'
masak brrt: Rakudo and Niecza.
brrt tnx
masak brrt: assume Rakudo and Niecza are right when Pugs says something else ;)
lichtkind jnthn: so youmean it | ?
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
i ment masak
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 :)
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
lichtkind yes sounds like that
brrt in a subroutine, that is
subroutine signature
masak lichtkind: I think contexts shouldn't be traded that lightly. therefore I'm doubtful it ever existed at all.
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
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
masak reminds himself of the 'git log' option that helps in this kind of detective work 19:56
19:56 NamelessTee joined
moritz jnthn: in docs/serialiaztion_format.markdown, are the "32-bit integer"s signed or unsigned? 19:56
masak: git log -S ?
masak yeah. just found it myself :) 19:57
moritz++
jnthn moritz: I think signed in the implementation reality, but not sure anything uses them being, so may change that.
Or clear up where it is/isn't.
moritz: Feel free to create an issue for it on GitHub. 19:58
The doc is likely imperfect in more than one way, but better than no docs at all and should be accurate. :)
Or at least not incorrect.
moritz jnthn: agreed
20:01 fgomez joined
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
jnthn s/super/meta/ 20:02
[Coke] im prefecture.
lichtkind yes
but its a parent class?
jnthn My typing is imprefect :P
masak lichtkind: "super methods"? that can't be the right term for methods in the HOW object.
jnthn lichtkind: What is?
masak lichtkind: "super" generally means "base class".
lichtkind: .^foo does *not* call .foo on the parent class. 20:03
lichtkind: please go back and re-read S12 if you think that's the case :)
Araq when is this test PObj_flag_TEST(GC_need_write_barrier, o) true? and when false? 20:05
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␤␤»
Araq and how does the GC perform in benchmarks?
jnthn Araq: Not sure of the mechanism without going through the code, but it'll almost certainly be something to do with generations.
20:06 s1n left
masak .oO( the performance of the GC is trashy ) 20:07
20:07 kaare_ left
moritz probably it's true if the object is "dirty", ie needs to be considered in the next GC run 20:08
Araq ok, but when is it "dirty"? 20:09
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)
lichtkind allright done
Araq er, but this check is done before the write barrier
jnthn moritz: It's not the mark bit
moritz Araq: iirc parrots GC uses just two generations
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
Oh, maybe configured to 4 then...
Araq jnthn: 8 is the maximum that can be used
moritz jnthn: I thought it was the "Needs to be considered for marking" flag, but I might very well be wrong
Araq but I see; if a field within an object triggered the write barrier, the owner's bit is set 20:12
and this is tested by PObj_flag_TEST(GC_need_write_barrier, o)
dalek ast: 52d4515 | moritz++ | S06-other/main-usage.t:
RT #92986, MAIN should do a normal multi dispatch, not just call the first matching candidate
20:13
[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
moritz r: say 1, 2, 6 ... * 20:16
p6eval rakudo 4373f0: OUTPUT«...␤»
moritz r: say 1, 2, 6 ... 10
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 …
masak moritz: what was that first one? 20:22
20:22 s1n joined
masak is this something out of RT? 20:22
moritz it is
masak oh good :) it belongs there :)
moritz r: say ~(1, 2, 6 ... *)
p6eval rakudo 4373f0: OUTPUT«...␤»
moritz r: say ~(1, 2, 6 ... *)[10] 20:23
p6eval rakudo 4373f0: OUTPUT«␤»
moritz eeks
no, that particular thing isn't in RT
20:23 fglock_ left
masak submits rakudobug 20:23
Araq how does the GC perform in comparison to Boehm's?
moritz Araq: much better
Araq why?
moritz Araq: there was a branch that plugged Boehm's GC into parrot, and it was slower
possibly because it's optimized for parrot's specific needs 20:24
Araq when was that?
moritz before we got the generational GC
Araq well Boehm ain't bad these days
moritz so maybe 1 or 2 years
dalek kudo/nom: fd7f971 | moritz++ | tools/build/NQP_REVISION:
bump NQP revision to get NativeCall serialization fix
20:26
kudo/nom: 2c35bdb | moritz++ | src/core/ (2 files):
typed exception for failed sequence deduction
ast: 2365690 | moritz++ | S32-exceptions/misc.t:
RT #98678, error message for failed sequence deduction
20:28
TimToady the difference might be less when parrot uses more compact storage
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
my impression is that parrot objects are still relatively fluffy though 20:31
moritz too
Araq how does Parrot's GC deal with threading?
sorear does parrot have threading?
moritz sorear: nine is working on that. Green threads are already tehre 20:32
20:33 vlixes left
benabik Araq: The current threading implementation (in progress) has a separate GC per OS-thread 20:33
Araq I see
20:33 avar left, avar joined, avar left, avar joined
dalek p/toqast: ba5e1c1 | jonathan++ | src/QAST/Regex.nqp:
Switch QAST::Regex attributes to use native types.
20:34
p/toqast: d4db55a | jonathan++ | / (2 files):
Stub in QAST::Op.
Araq so there is only message passing between threads? 20:35
masak blogs.perl.org/users/kmx/2012/04/i-...shole.html makes me sad :(
sorear benabik: oh, ithreads-style? 20:37
benabik sorear: Not familiar with ithreads.
masak "There ain't nothin' in this world that's worth being a snot over." -- TimToady
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.
moritz: It's memory corruption of some kind...so seems non-trivial to find. :( 20:42
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
jnthn moritz: Agree.
moritz (at least if we want to tackle DB stuff there)
Araq how do you work around valgrind when tracing the hw stack conservatively?
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.
moritz jnthn: running with valgrind now 20:45
jnthn moritz: oh, awesome 20:46
moritz I get lots of Use of uninitialised value of size 8 in Parrot_CallContext_mark 20:47
and some from Parrot_String_mark
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
Then we can compare the two...the differences may well point out the issue.
sorear benabik: ithreads is a perl 5 threading subsystem where "threads" cannot share variables
benabik: it's derived from the win32 fork emulation'
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:50
dalek p/toqast: ff18cac | jonathan++ | src/QAST/Node.nqp:
Another nativization.
20:51
moritz valgrind now says 20:53
==32611== More than 10000000 total errors detected. I'm not reporting any more.
==32611== Final error counts will be inaccurate. Go fix your program!
Araq yeah, valgrind does not like GCs ... ;-)
jnthn o.O 20:54
Araq unless there is a switch I'm missing
jnthn moritz: ooc, if you run with parrot -G does the segfault go away? 20:55
moritz jnthn: will check 20:56
20:57 vlixes joined
moritz jnthn: wow, with -G parrot eats up lots of memory until the OOM killer stops it 20:58
masak r: say (so not True) 21:00
p6eval rakudo 4373f0: OUTPUT«False␤»
masak :D
r: my &that_is = &say; that_is so not True 21:01
p6eval rakudo 4373f0: OUTPUT«False␤»
jnthn moritz: I wonder if it's possible to get this down to a smaller test case... 21:03
21:05 birdwindupbird left
Araq apparently you can make valgrind quiet about the stack scanning by providing a "suppression file" 21:06
moritz Araq: and that seems to be quite a piece of science on its own 21:08
jnthn: well, there are other segfaults I remember 21:09
jnthn: for one, adding some natively typed str ops to the setting caused some segfaults, last I tried
jnthn moritz: Interesting, though not automatically related
21:09 pernatiy joined
Araq so if GCs a per thread, is there any shared heap available too? 21:11
sorear Sounds like no, from what benabik is saying 21:12
moritz jnthn: and SVG::Pie segfaults/segfaulted with precompiled modules
Araq so how would a "junction" (right term?) ever be parallelized? 21:13
sorear junctions aren't parallelized 21:14
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
masak I'd rather we focus on parallelizing >>.method calls
Araq ok, sorry picked the wrong term 21:16
well how would 'map' for instance be parallelized? 21:17
masak it wouldn't, per default. 21:18
it is if you modify it with 'hyper'.
same with 'for', IIRC.
and 'grep', I'd guess.
but not 'sort' :) 21:19
Araq kk, so a 'hyper map' copies parts of the array/list to some other thread to process it?
masak it parallelizes, m'kay? 21:20
:P
moritz wow, under valgrind it manages to connect to the DB
Araq the devil is in the details, masak
masak and don't I know it. 21:21
"ask not what parallelization can do for you, ask what you can do for parallelization" ;)
dalek ast: e630836 | masak++ | S03-smartmatch/range-range.t:
[S03-smartmatch/range-range.t] new test file

Prompted by
  github.com/perl6/specs/commit/f0f29...4ff7f8c4fd
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
pmichaud what *should* rt #112288 produce?
21:24 fgomez left
masak looks 21:24
lichtkind yeah backlinks for sigils and twigils are ready
jnthn o/ pmichaud
pmichaud r: say (1, 2, 6 ... *)[10]
p6eval rakudo 4373f0: OUTPUT«Nil␤»
moritz r: 1, 2, 6 ... 8
p6eval rakudo 4373f0: ( no output )
pmichaud That looks right to me.
moritz r: say 1, 2, 6 ... 8
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 …
moritz pmichaud: I'd expect to get exactly that error
pmichaud why?
masak pmichaud: "unable to deduce sequence"
pmichaud why?
moritz pmichaud: because it fails to deduce the sequence
pmichaud You did get the Failure object, but never used it.
masak pmichaud: because it's neither an arith nor a geom sequence. 21:25
pmichaud [10] goes beyond the failure object.
r: say (1, 2, 6 ... *)[0]
p6eval rakudo 4373f0: OUTPUT«1␤»
pmichaud r: say (1, 2, 6 ... *)[1]
p6eval rakudo 4373f0: OUTPUT«2␤»
pmichaud r: say (1, 2, 6 ... *)[3]
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␤␤»
masak d'oh!
moritz erm
pmichaud r: say (1,2,6 ... *)[^10]
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␤␤»
jnthn pmichaud: Does [10] not reify up to that point? 21:26
pmichaud it does
but the sequence ends after the 6
jnthn pmichaud: oh but, failure...got it...
pmichaud with "unable to deduce sequence"
masak it's right but it feels wrong.
moritz r: say (1, 2, 6 ... *)
p6eval rakudo 4373f0: OUTPUT«...␤»
moritz *that* one feels wrong
masak I don't like that either.
pmichaud I agree that one seems to gist wrongly
moritz r: say ~(1, 2, 6 ... *)
p6eval rakudo 4373f0: OUTPUT«...␤» 21:27
moritz and that one *certainly* is
pmichaud the point being that it's lazy
moritz and ~ is eager
masak in the unforgettable words of GlitchMr: "..."
pmichaud but ... * is infinite, which pre-empts eagerness
moritz r: say ~(1, 2, 6 ... *).eager
p6eval rakudo 4373f0: OUTPUT«...␤»
pmichaud ~ is *mostly eager*
moritz well, if it's infinite, why does .[10] not return anything? 21:28
pmichaud ... * is infinite for purposes of eagerness
it really means "we don't know how long this is, so stop here instead of continuing blindly along"
jnthn moritz: Infinite as in "result of .infinite"
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
moritz -> sleep
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.
Araq sorear: yeah but that's boring ;-)
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
masak must the failed sequence result in a failure? can't it just five a good ol' error? 21:32
give*
pmichaud Normally we signal errors by returning failure.
21:32 vlixes left
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:33
masak well, in general I'm happier the earlier I discover that something I wrote would never have given the expected result. 21:34
I know that flies in the face of laziness, but...
I can't really see someone being disappointed that they got this error message *too early* :)
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
masak hm. 21:35
pmichaud same for something like @a ... $c
dalek p/toqast: 3e9ecfc | jonathan++ | src/QAST/Node.nqp:
Add a way to mark types on QAST nodes if known.
21:36
p/toqast: de37dc4 | jonathan++ | / (3 files):
Start sketching out compile-time known value handling and how we'll reference values in World (so common it deserves explicit support).
Araq masak: sounds like you want static typing ;-) 21:38
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…
pmichaud n: say ~(1, 2, 3 ... *)[2] # curious
p6eval niecza v15-6-gefda208: OUTPUT«3␤»
pmichaud n: say ~(1, 2, 6 ... *)[2] # curious 21:44
p6eval niecza v15-6-gefda208: OUTPUT«6␤»
pmichaud n: say ~(1, 2, 6 ... *)[4] # curious
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…
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
masak fine by me :)
jnthn wfm
masak pmichaud++
jnthn I can pun on "infinite failure" :)
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
pmichaud I'm not entirely comfortable with that solution, though.
masak daemon: hi! I'm writing a reply.
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?
masak Araq: yeah, but that's wider than static typing.
pmichaud ntlug.org/pipermail/discuss/Week-of...33913.html # here's a Perl 6 answer I was able to give earlier today :)
masak lichtkind: generally, between one and six pips :P
21:48 havenn left
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.
lichtkind: en.wikipedia.org/wiki/Dice
lichtkind: sorry, I'm being facetious. :)
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.
but more or less, yeah, you'd be starting from scratch.
it's pretty much a DIY shop right now. 21:50
daemon I see :)
ah clone of dancer
masak aye.
phenny: "Bailador"?
phenny masak: "dancer" (es to en, translate.google.com)
daemon I see :)
thank you for the info masak
masak no problemo. 21:51
21:51 mj41 left 21:53 brrt left 21:54 fgomez joined
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:54
lichtkind masak: ive no problem with that ust if the right answer arrives at some time :) 21:55
first 25 backlinks 21:56
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
lichtkind: you also probably know, since I said it the other day, that S28 is filled with dragoons. :)
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" 21:58
lichtkind masak: i argue also that $?XVM will survive some serious thinking 22:01
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:02
but im not sure anyone at all uses it currently :) 22:08
22:09 fgomez left 22:10 fgomez joined
pmichaud I wonder if _any_ sequence that encounters a "unable to deduce sequence" condition should generate an infinite sequence of failures 22:12
e.g., say (1, 2, 6 ... 80)
masak r: say (1, 2, 6 ... 80)[10] 22:13
p6eval rakudo 4373f0: OUTPUT«Nil␤»
masak so... yes? :(
:)
22:13 cbk1090 left
pmichaud it would seem odd to convert a finite sequence into an infinite one, though. 22:14
("finite" here means "sequence that the programmer did not indicate as somehow 'infinite' via *")
masak aye. 22:15
pmichaud r: say (1, 2, 6 ... 80).elems
p6eval rakudo 4373f0: OUTPUT«4␤»
pmichaud r: say (1, 2, 6 ... *).elems
p6eval rakudo 4373f0: OUTPUT«Inf␤»
masak .oO( but Inf of those Inf elements are Failures... ) 22:16
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 :)
masak ok, everyone stop chaning Perl 6 until lichtkind is done.
changing*
tadzik did anyone try to compile Rakudo on ARM?
pmichaud an ARM probably isn't powerful enough. You might need a LEG instead :) 22:22
(j/k)
masak .oO( an ARM and a LEG... )
tadzik ;)
jnthn tadzik: Sure there's no 'arm in trying...
tadzik ISTR snarkyboojum was running perl 6 on his N900
masak .oO( putting Perl 6 in ARM's way... ) 22:23
ahh, so many puns to (arm) wrestle with...
lichtkind done 22:24
tadzik wrestling considered 'armful
lichtkind haha
and i not even start with the real tablets
22:24 spider-mario left, kborer joined
pmichaud declares a pun armistice 22:24
masak nicely self-contradictory :) 22:25
jnthn lays down his arms
masak .oO( the right to arm bears )
dalek kudo/nom: cb61d59 | masak++ | / (2 files):
[src/core/Range.pm] Range ~~ Range semantics

Now by spec. \o/
22:26
masak moritz++ # for nagging me about "the proper approach" :)
lichtkind k last edit for today good night and have fun (without rewrites if possible) 22:27
pmichaud masak++ # nice patch
well, time to take @kid[1] to soccer practice; bbl 22:28
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.
jnthn *of
pmichaud ah, the ^'s
masak :)
(i.e. excludes_min and _max matter) 22:31
jnthn: you're not supposed to correct other people's typos! :P
jnthn Same room rule. :P
pmichaud maybe the spec should explicitly say .min and .max
masak dang. :P
pmichaud: how does that help?
pmichaud subclassing/overloading 22:32
masak pmichaud: but... .bounds is just a method that delegates to .min, .max
pmichaud in Range, yes. 22:33
masak well, $!min, $!max to be precise.
pmichaud but a subclass of Range could redefine bounds
masak ok, I see your point.
pmichaud I agree it's a nit-pick
masak though I think it would be insane to redefine .bounds to differ from .min/.max
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 lichtkind left
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
however:
what about something like (10..1) ~~ (5..6) 22:36
r: say (10..1).min
p6eval rakudo 4373f0: OUTPUT«10␤»
pmichaud r: say (10..1).max
p6eval rakudo 4373f0: OUTPUT«1␤»
pmichaud r: say (10..1).bounds.all ~~ 5 .. 6
p6eval rakudo 4373f0: OUTPUT«all(True, False)␤»
masak aughh.
pmichaud whereas I think your patch will end up with True 22:37
masak nodnod
pmichaud or some other similar case
masak right.
what about 5..4 ~~ 3..8 ?
should it be True or False? 22:38
pmichaud I don't know.
masak the empty set is a subset of any set.
but ranges aren't exactly sets either.
pmichaud yes, that's what I was thinking
right, because 5..2 ~~ 10..20 should probably be false-ish
masak right.
pmichaud anyway, there still seems to be a couple of hole cases :) 22:39
masak aye. 22:40
more spectests needed. :)
pmichaud more spec clarification needed :)
masak TimToady: ^
pmichaud anyway, I have to depart -- I leave it to you and moritz++ to work on for a bit
and TimToady++ too, of course
masak o/
jnthn o/ 22:41
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?
er, self.ACCEPTS(...)
22:43 NamelessTee left
masak it would. so maybe the spec caveat is actually meaningless. 22:45
pmichaud I think so.
masak no wait.
it's not.
it only handles them for the surrounding range.
pmichaud I don't think we have to worry about them for the subset range
masak the enclosed range still needs to special-case its .bounds
yes, we do.
pmichaud example?
masak 2..^4 ~~ 1..^4 22:46
pmichaud hrm
Teratogen p6: say -10..-20; 22:47
p6eval rakudo 4373f0, niecza v15-6-gefda208: OUTPUT«-10..-20␤»
..pugs: OUTPUT«␤»
pmichaud okay, so .bounds.all is sufficient but not necessary 22:49
anyway, I do have to leave -- bbl
Teratogen bye!
22:50 fgomez left
pmichaud so perhaps the algorithm is more complex than can appear in that simple column of S03 22:51
i.e., it's one of those matches that is truly "smart"
masak do we have to provide the algorithm as runnable code? 22:52
pmichaud no
masak I mean, it's really easy to state in language.
"the range is contained in the other range"
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
that's why smart match can be "smart" :)
TimToady++ may of course disagree
or perhaps "mod ^'s" is really pointing out that .bounds.all is sufficient but not necessary 22:53
anyway, gotta go, for realz this time
22:57 whiteknight joined
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:57
that said, I still think "range X contains range $_" is both clear and unambiguous. :) 22:58
well, um, apart from the empty-ranges consideration... :/
masak stops thinking about this for now
23:01 pmurias joined
pmurias [Coke]: TPF's latest call? 23:01
23:01 fgomez joined, kborer left
pmurias [Coke]: where can i read about that? 23:20
23:21 benabik left
masak 'night, #perl6 23:27
colomon \o 23:33
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
in some sense, all impossible ranges are equivalent, and thus none of them are contained in another range.
'night. 23:36
doy seems odd that 5..$n would match 1..* for all $n >= 5, but not for $n < 5 23:38
dalek ecs: 2019017 | larry++ | S03-operators.pod:
be very specific about Range ~~ Range semantics
23:50
jnthn -> sleep
[Coke] pmurias: news.perlfoundation.org/2012/04/2012q1-cal.html 23:54
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:56
23:58 da2ce7 joined