A few days ago Gerard Goossen released version 1.5 of his kurila project to the CPAN, a fork of Perl 5, both the language and the implementation. I talked with about the history of this new direction.


Andy: Why Kurila? Who would want to use it? What are your goals?

Gerard: Kurila is a fork of Perl 5. Perl Kurila is a
dialect of Perl. Kurila is currently unstable, the language is
continuously changing, and has just started.

There are a few goals, not all of them going in
the same direction. One of the goals is to simplify the Perl internals
to make hacking on it easier. Another is to make the Perl syntax
more consistent, remove some of the oddities, most of them historical
legacy.

What is currently being done is removing some of the more
object/error-prone syntax like indirect-object-syntax and removing
symbol references. Both of these are not yet very radical yet,
most modern Perl doesn’t use indirect-object-syntax or symbol
references.

But I am now at the stage of doing more radical changes, like
not doing the sigil-change, so that my %foo; $foo{bar}
would become my %foo; %foo{bar} .

Andy: Where do you see Kurila getting used? Who’s the
target audience for it?

Gerard: Kurila would be used for anything where currently
Perl is being used. I am using Perl for large websites so changes
will be favored in that direction.

I am working for TTY Internet Solutions,
a web development company. We develop and maintain websites in
Perl, Ruby and Java. Websites we develop include www.2dehands.be,
www.sellaband.com, www.ingcard.nl and www.nationalevacaturebank.nl.
Of these www.2dehands.be and www.nationalevacaturebank.nl are
entirely written in Perl.

We are not yet using kurila in production, but I have a testing
environment of www.2dehands.nl which is running on Kurila. Developing
Kurila is part of my work at TTY.

Many of the changes in Kurila are inspired by bugs/mistakes we
made developing these sites. It started with the UTF8 flag. We
encountered many problems making our websites UTF-8 compatible. In
many cases the UTF8-flag got “lost” somewhere, and after combining
it with another string, the string got internally upgraded and our
good UTF-8 destroyed. Because everything we have is default UTF-8.
The idea was simply to make UTF-8 the default encoding, instead of
the current default of latin1.

Andy: Did you raise the possibility of changing the default
encoding in Perl?

Gerard: The problem is that changing the default encoding
the UTF-8 is that is destroys the identity between bytes and
codepoints. So it’s not a possibility for Perl 5. Like what does
chr(255) do? Does it create a byte with value 255 or
character with codepoint 255?

I made a patch removing the UTF-8 flag and changing the default
encoding to UTF-8 and sent it to p5p.

Andy: What was the response?

Gerard: There was as good as no response to it, I guess
because it was obvious that it seriously broke backwards compatibility
and the patch was quite big, making it difficult to understand.

About two weeks after the utf8 patch, I announced that I wanted
to change the current Perl 5 development to make it a language which
evolves to experiment with new ideas, try new syntax and not be
held back by old failed experiments. One of the interesting things
about Perl is that it has a lot of different ideas and these are
coupled to the syntax.

There was of course the question of why not Perl 6.  That it
should/could be done in backwards-compatible way. That there is no
way of making the Perl internals clean, that is better to start
over.

And about half a year ago I announced that I had started Kurila,
my proof of-concent for the development of Perl 7. Rewriting some
software from scratch is much more difficult then it seems, and I
think starting with a well proven good working base is much easier.
Perl 5 is there, it is working very good, has few bugs, etc., but
it can be much better if you don’t have to worry about possibly
breaking someone code, and just fix those oddities.

Andy: Do you have a website for it?  Are you looking for
help?

Gerard: There isn’t a website yet, and also no specific
mailing list, currently all the discussion is on p5p. There is a
public git repository at git://dev.tty.nl/perl.

Andy: What can someone do if he/she is interested in
helping?

Gerard: Contact me at gerard at tty dot nl. Make
a clone of git://dev.tty.nl/perl and start making changes.