Is Perl 6 dynamic? Well, it sure looks like it: you can eval code at runtime, do all kinds of late-bound lookups, write code without a type declaration in sight, dynamically generate types, and even mutate the language and the way its object model works. But hang on a moment! Misspell a variable or object attribute? That's a compile time error. Call a subroutine that doesn't exist? Yup, same deal. Passing just one argument to a sub that needs two? There's a good chance you'll be told about that too...at compile time. Want to write code that uses native integers and floating point numbers? Go right ahead and throw in some types. Oh, and those super-dynamic modules that extend the language? They can get in on the act, and flag up things to the programmer at compile time too! In this session, we'll explore how Perl 6 strikes a balance between static and dynamic, how the Rakudo Perl 6 compiler takes advantage of this careful design work, and how the language and implementation are flexible enough to let the programmer pick their own trade-offs if the defaults don't fit their problem.
Speakers: Jonathan Worthington