IRC log, pmichaud answering why my patch is wrong:
pmichaud: it's something like this: .value on a Pair is an lvalue pmichaud: so, if I have :x and :y pmichaud: or, more precisely, if I have pmichaud: my $x = :x; my $y = :y; pmichaud: then both $x.value and $y.value end up referring to exactly the same PMC pmichaud: so that if someone ends up later doing $x.value = 3; pmichaud: it has the potential to also change $y.value (since they're bound to the same PMC) pmichaud: so, what really needs to happen is to end up with separate copies of Bool::True and Bool::False pmichaud: i.e., the problem is related to the difference between doing a binding (which is what your code ends up doing) and an assignment or using a constant pmichaud: (I'm trying to think of a good way to update the patch) pmichaud: okay, I don't have a good fix off the top of my ehad. pmichaud: For that reason I think perhaps we can go ahead and apply this patch as-is pmichaud: but we should put a note in there that it might cause issues with binding to True/False later. ihrd: aha, now I am understend ihrd: no. I don`t, why binding is wrong here? I can`t find out the situations where this is broken something ihrd: > my $x = :x; my $y = :y; $x.value = 2; say $y.perl; say $x.perl ihrd: "y" => Bool::True ihrd: "x" => 2 pmichaud: yes, but Pairs are currently not doing .value correctly. When they do, this will break. ihrd: ah :(