The ability to define fully-functional custom arrays with a struct definition and just a handful of methods is a powerful tool in Julia, but there are some tips and tricks that are essential to making them both fast and robust. In this talk, I’ll implement a custom array following the AbstractArray interface, and then we’ll dig in deeper to examine and iteratively optimize the generated code in a typical use-case. We’ll examine some key examples where custom arrays can completely transform an algorithm. You’ll be able to follow along with an incremental approach to defining and improving the arrays. Along the way, you’ll learn about the key idioms — like Holy traits and bounds-checking — that are integral to this interface. Finally, I’ll take a look at some of the more advanced custom arrays that are published, useful, and widely used.
Matt Bauman is a Senior Research Scientist at JuliaComputing at their Chicago outpost, where he spends lots of time working on Julia’s arrays. He’s been contributing to both the core language and multiple packages since 2014. At his previous position as a Data Science Fellow at the University of Chicago’s Center for Data Science and Public Policy, he longed for dot-broadcasting in Python. He recently defended his PhD dissertation in Bioengineering from the University of Pittsburgh, focusing on neural prosthetics.