Videos from JuliaCon are now available online
2018
Previous editions: 2017 | 2016 | 2015 | 2014
Jameson Nash

Julia Computing, Inc.



Information overload: tools for making program analysis and debugging manageable

Julia is a great language for code analysis tools. The combination of dynamic and static features gives a very rich environment for both producing and exploring the program full stack. Current tooling can provide essential insights into the workings of a program. These including everything from simple annotation and highlighting functions such as code_warntype, to performance testing tools like @profile and BenchmarkTools’s @benchmark, to tests and documentation, to Revise.jl workflows. This talk will open by exploring the strengths, limitations, and purposes of several of these. However, these tools share one significant common aspect: they are not especially interactive. Indeed, as a goal, these try to be absolutely stateless. What tools do we need to complement these and expand our workflow? One traditional stateful tool is the lowly – but essential – debugger. But in Julia, can we do even better? What if we could explore the compilation space just as easily as exploring the execution space? In what ways can we combine the insights from a debugger with the insights from the compiler to further our real understanding of the program (and, inevitably, its flaws)? How would we aggregate that information and present it in a way that can be exported and shared? In this talk I’ll introduce my new tool for interactive program analysis, aka debugging. Julia has a unique combination of dynamic features and a standard library designed to be strongly amenable to static analysis. These aspects make possible the integration of a range of the development aids mentioned earlier to benefit developers and users alike. Let’s see what a bright new future for analyzing Julia code might look like!

Speaker's bio

I’ve been a Julia contributor since before it was cool. Now, I’m working for Julia Computing, as the static compilation champion, compiler correctness fiend, and performance cliff jumper.