"Perl 5 was my rewrite of Perl. I want Perl 6 to be the community's rewrite of Perl and of the community."
- Larry Wall, State of the Onion speech, TPC4

A complete rewrite of Perl by Larry and the gang. The internals of Perl 5 were full of kludges, it was very hard to extend, and people wanted new features, so it was decided that a complete rewrite would be in order. Perl 6 separates the parsing from the compilation and runtime, by using the Parrot virtual machine for program execution. Perl 6 will not actually execute code, but instead compile it down to Parrot bytecode and pass it on to Parrot. Parrot is to be a bytecode interpreter for weakly-typed scripting languages in general, so you will be able to share libraries between Perl 6 and other languages that use Parrot. (yes, the name 'Parrot' was originally the name for a joke language, but this is not the same thing, although this is more or less named after the joke language).

Perl 6 breaks a lot of old syntax. For instance, '->' (the class method/attribute accessor) becomes '.'. '.' (the string concatenation operator) becomes '_'. Elements of an array will be accessed by @arrayname[element] instead of $arrayname[element], but that's okay, because the old syntax was kinda goofy. Unfortunately, it will be neccessary to not leave any space between hash names and their subscripts, so as to not confuse them with code blocks. Where before you could say $hashname {subscript}, you will now have to say %hashname{subscript}.

One of the big, fun differences from Perl 5 will be the regex engine. Perl 6's pattern matching features will be quite a departure from the old regexes that we all know and love. The new engine is based on 'rule's, and allows for recursive matching. See apocolypse/exegeses 5 for details.

For what it's worth, Perl 6 will provide native support for different string encodings (unicode strings)