Package development: improving engineering quality & latency
2021-07-24 , Red

Julia holds immense promise for a composable package ecosystem. Potential obstacles to achieving this promise include missing methods for unanticipated types, unwitting type-piracy, poor performance due to inference failures, method ambiguities, and latency due to long compilation times and/or invalidation of previously-compiled code.

This workshop will tutor developers on the use of some recently-developed tools for detecting, diagnosing, and fixing such problems.


This workshop will tutor developers on the use of some of the tools available for improving package quality and reducing latency. We will begin by summarizing the factors that influence dispatch, inference, latency, and invalidation, and how monitoring inference provides a framework for detecting problems before or as they arise. We will then tutor attendees in the use of tools like MethodAnalysis, JET, Cthulhu, and SnoopCompile to discover, analyze, and fix detected problems in package implementation. We will also show how in addition to improving robustness, such steps can often streamline design and reduce latency.

This workshop is aimed at experienced Julia developers. Materials can be cloned from https://github.com/aviatesk/juliacon2021-workshop-pkgdev

Timothy E. Holy is the Alan A. and Edith L. Wolff Professor of Neuroscience and Biomedical Engineering at Washington University in St. Louis. His lab combines technological innovation with analysis of the rules governing neuronal function and computation. His work on Julia includes contributions to the type system, the array and broadcasting infrastructure, the standard library, and developer tools like the profiler, debugger, Revise, and many others.

This speaker also appears in:

A research programmer working at Julia Lab, MIT. Working on Julia's compiler technology stack, mainly around its abstract interpretation based type inference. Also a maintainer of Julia IDEs, julia-vscode and Juno.

This speaker also appears in: