An improved and backwards compatible Perl 5
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Cross
NetWare
Porting
cpan
cygwin
dist
djgpp
ext
h2pl
haiku
hints
lib
os2
plan9
pod
qnx
regen
symbian
t
utils
vms
vos
win32
.dir-locals.el
.gitignore
.travis.yml
AUTHORS
Artistic
Changes
Configure
Copying
EXTERN.h
INSTALL
INTERN.h
MANIFEST
META.json
META.yml
Makefile.SH
Makefile.micro
Policy_sh.SH
README
README.aix
README.amiga
README.android
README.bs2000
README.ce
README.cn
README.cygwin
README.dos
README.freebsd
README.haiku
README.hpux
README.hurd
README.irix
README.jp
README.ko
README.linux
README.macos
README.macosx
README.md
README.micro
README.netware
README.openbsd
README.os2
README.os390
README.os400
README.plan9
README.qnx
README.riscos
README.solaris
README.symbian
README.synology
README.tru64
README.tw
README.vms
README.vos
README.win32
TestInit.pm
XSUB.h
asan_ignore
autodoc.pl
av.c
av.h
caretx.c
cflags.SH
charclass_invlists.h
config_h.SH
configpm
configure.com
configure.gnu
cop.h
cv.h
deb.c
doio.c
doop.c
dosish.h
dquote_static.c
dump.c
ebcdic_tables.h
embed.fnc
embed.h
embedvar.h
fakesdio.h
feature.h
form.h
generate_uudmap.c
globals.c
globvar.sym
gv.c
gv.h
handy.h
hv.c
hv.h
hv_func.h
inline.h
inline_invlist.c
install_lib.pl
installhtml
installman
installperl
intrpvar.h
iperlsys.h
keywords.c
keywords.h
l1_char_class_tab.h
locale.c
make_ext.pl
make_patchnum.pl
makedef.pl
makedepend.SH
malloc.c
malloc_ctl.h
mathoms.c
metaconfig.SH
metaconfig.h
mg.c
mg.h
mg_names.c
mg_raw.h
mg_vtable.h
miniperlmain.c
mkppport
mkppport.lst
mro_core.c
myconfig.SH
mydtrace.h
nostdio.h
numeric.c
op.c
op.h
op_reg_common.h
opcode.h
opnames.h
overload.c
overload.h
packsizetables.c
pad.c
pad.h
parser.h
patchlevel.h
perl.c
perl.h
perlapi.c
perlapi.h
perldtrace.d
perlio.c
perlio.h
perlio.sym
perliol.h
perlsdio.h
perlvars.h
perly.act
perly.c
perly.h
perly.tab
perly.y
pp.c
pp.h
pp_ctl.c
pp_hot.c
pp_pack.c
pp_proto.h
pp_sort.c
pp_sys.c
proto.h
reentr.c
reentr.h
regcharclass.h
regcomp.c
regcomp.h
regcomp.sym
regen.pl
regen_perly.pl
regexec.c
regexp.h
regnodes.h
run.c
runtests.SH
scope.c
scope.h
sv.c
sv.h
taint.c
thread.h
time64.c
time64.h
time64_config.h
toke.c
uconfig.h
uconfig.sh
uconfig64.sh
unicode_constants.h
universal.c
unixish.h
utf8.c
utf8.h
utfebcdic.h
util.c
util.h
utils.lst
vutil.c
vutil.h
vxs.inc
warnings.h
write_buildcustomize.pl

README.md

Welcome to Piledriver

Piledriver is a backwards compatible fork of Perl 5. Its goals are...

  • To be 100% backwards compatible.
  • Make rapid advances to the language using good ideas from CPAN.
  • To be welcoming to new developers.

Piledriver draws its inspiration from perl5i. Its major feature improvements will aim to bring good ideas from CPAN in as core features. This will probably include...

  • Core functions that throw exceptions (similar to autodie)
  • Moose-style objects
  • Everything is an object
  • Better file handling (similar to Path::Tiny)
  • Better date handling (similar to DateTime)
  • Better default behaviors, less gotchas
  • Less global variables
  • More built in data utilities, less CPAN modules to install

Piledriver also aims to expand who can and wants to work on the Perl 5 core language by...

  • Having better documentation about how to contribute.
  • Making it simpler to contribute.
  • Reducing the complexity of the code.
  • Using well-understood services and tools such as Github and Travis.
  • Having a well behaved, principled community.
  • Acknowleding the importance of non-code contributions.
  • Reducing the risk of adding new features to the language.

Piledriver is 100% backwards compatible with Perl 5, you can safely run your existing Perl 5 code on Piledriver. Features will be turned on a block by block basis allowing even old, crufty projects to transition.

# This is Perl 5
open my $fh, "<", $file or die "Can't open $file for reading: $!";

{
    # This is Piledriver (except this doesn't work yet)
    use piledriver v1;
    my $fh = $file->path->openr;
}

We have our own wiki and issue tracker. Right now the focus is on getting exceptions working as our first stable feature, but if you have an idea you'd like to see worked on, let us know!

Currently the project is just getting started. There are no releases and no complete features.