»ö« 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«1234» | ||
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-infixParse failedFAILED 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-infixParse failedFAILED 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 blockat /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-272012-02-282012-02-292012-03-012012-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«1011121314151617181920» | ||
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,1Unhandled 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, $exVariable $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 declaredat /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, $expUndeclared routine: 'each' used at line 1Unhandled exception: Check f… | |||
..pugs: OUTPUT«TE510» | |||
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«T10E1155» | ||
..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, $expUndeclared routine: 'zip' used at line 1Unhandled 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⏏ $.xok 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).xPotential 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!===Confusedat /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 1Unhandled 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«ff» | ||
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
|