Short answer: everything must declare which semantics it expects- everything in Panda/CPAN at least. And we already knew it, just need to do it.
Full post: This thread points to a bigger problem, which has a solution that is both cultural and technical. Perl5 has a colossal code corpus, humbling in its pervasiveness. Perl culture understands the value of backward compatibility to keep that code working as the language evolves and the interpreter improves; Perl-porters master the compatibility dance and pay for it with cognitive complexity. Perl5 has a tension between moving forward and keeping all existing code running as it was first written. The backward-compatibility contract is beneficial to the community, and yet it is also friction, drag on the perl interpreter's progress. In Perl6 culture, it's time to also adopt the ethic of forward compatibility where each module states exactly what Perl6 semantics its coded for. This is not a new idea, S11 says it: "modules are also required to specify exactly which version (or versions) of Perl they are expecting to run under, so that future versions of Perl can emulate older versions of Perl" That's the cultural part of the solution: we need to start putting "use 6.0.0" at the start of our code now. The technical part of the solution is for post-Christmas Perl 6.0.1 to respect that declaration and "do the right thing." And more immediately, the community fix is to get the word out; the technical fix is to s/use v6;/use v6.0.0;/ for everything in Panda that doesn't get the message by the release date. The old way "use v6;" means "use any Perl6" and is what got us here: "6.*" is against the spirit of "exactly which version (or versions) of Perl they are expecting to run under." ... As for the specific issue of to grin widely or flatly, to :D or :_ defaultly, I'll defer discussing until 6.0.1. (Earlier I posted a more specific answer to Darren only; this post is more robust.)