The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
=head1 NAME

kurila01delta - what is new for Perl Kurila 0.1

=head1 DESCRIPTION

This document describes differences between Perl Kurila 0.1 and Perl v5.9.x DEVEL30965

=head1 Highlights In Kurila 0.1

=over 4

=item *

Lexical scoped byte vs codepoint semantics

=item *

Strings are internally always encoded using UTF-8

=item *

Removal indirect object syntax

=item *

Removal formats

=back

=head1 Core Enhancements

=head2 Lexical scoped byte vs codepoint semantics

Instead of having an string dependend byte vs codepoint semantics, the semantics is not determined
by the lexical scope.
C<use bytes> sets byte semantics for the current lexical scope, C<use utf8> set codepoints semantics for the
current lexical scope.
chomp, chop, chr, index, lc, lcfirst, length, oct, ord, reverse, rindex, substr, uc, ucfirst
all depend on the lexical scope to determine whether to use bytes or codepoints.
The default lexical scope is bytes.

=head3 Rationale

Semantics of a function is fixed at compile time.

=head2 Internal encoding using UTF-8

Strings are always internally represented using UTF-8

=head3 Rationale

No need to worry about what encoding a string is. There is
no need to distinguish byte and codepoint strings.

=head2 \x...

C<\x{NUMBER}> creates a codepoint with the numeric value NUMBER.
C<\x[NUMBER]> creates a byte with numeric value NUMBER modulo 256.
C<\x1b> creates a codepoint or byte depending on the lexical scope.

=head3 Rationale

Makes it possible to distinguish between a bytes and codepoints.

=head2 /u pattern option

Regex unicode matching is enabled when C</u> option is enabled on a pattern, or when C<use utf8>
is in effect.

=head3 Rationale

Unicode vs bytecode matching no longer depends on the input string, but is determined by the pattern, thus a pattern option is needed to distinguish the two.

=head2 Indirect object syntax removed

Indirect object syntax has been removed.

=head3 Rationale

Indirect object syntax is ambiguous. And this frees the syntax for other uses.

=head2 formats removed

The C<format> and C<formline> keywords have been removed. As well as the
special vars $^A, $^, $~, $=, $-, $% and $:.

=head3 Rationale

Formats have many problems. Perl6::Form is a much better alternative.

=head1 Modules and Pragmata

=head2 New Modules and Pragmata

=over 4

=item Perl6::Form, by Damian Conway, is a replacement for the removed format and formline keywords.
Slightly modified as not to depend on Perl6::Export

=back

=head2 Updated Modules And Pragmata

Almost all modules and pragmata have been udpated to for the changes in the Core.

=head2 Deleted Modules and Pragmata

=over 4

=item locale, the locale pramga has been removed.

=back

=head1 KNOWN BUGS

=head2 Documentation

Documention has not been updated for many of the changes mentioned in this document.

=head2 Limited platform support

Perl Kurila has ony been tested/build for x86_64-linux-gnu-thread-multi platform.

=head1 SEE ALSO

The F<INSTALL> file for how to build Perl Kurila.

The F<README> file for general stuff.

The F<Artistic> and F<Copying> files for copyright information.

=head1 HISTORY

Written by Gerard Goossen <F<gerard@tty.nl>>.

=cut