1. A non-transitory computer-readable medium storing instructions that, when executed by one or more processors, cause the one or more processors to: receive a program written in a late-bound programming language, where: the program has a structure; and the late bound programming language delays function binding until a run time of the program; identify a function call of a function in the program, the function call being bound during the run time of the program, the function call being bound by a function binding, the function binding specifying: a name of the function; analyze the function call during the run time of the program, the analyzing comprising: collecting a type of the one or more function arguments when the function is called during the run time of the program, collecting an execution context representing a state of the runtime environment executing the program when the program is running, and collecting dependency relationships between functions and data objects in the program; determine a set of one or more predicted function bindings for the program, the determining based on the analyzing; and generate a customized runtime environment for the program, the customized runtime environment including the predicted function bindings.