1. A method comprising: receiving programming code, corresponding to a dynamic programming language, that is to be executed in a computing environment, the receiving being performed by a device; and executing the received programming code, the executing the received programming code being performed by the device and further comprising: maintaining a program counter, a value of the program counter identifying an execution location within the received programming code, and the maintaining being performed by the device; selecting blocks of the received programming code based on the value of the program counter, the blocks corresponding to segments of the received programming code, the blocks being associated with one or more type-based constraints that relate to types of variables that are used by the blocks, and the selecting being performed by the device; compiling the selected blocks, the compiling being performed by the device; caching the compiled blocks along with the one or more type-based constraints, the cached compiled blocks being reused, without recompiling the cached compiled blocks, when the one or more type-based constraints of the cached compiled blocks are satisfied, and the caching being performed by the device; generating linking information between certain ones of the compiled blocks based on the one or more type-based constraints, the linking information relating to an indication that the certain ones of the compiled blocks will execute in an order indicated by the linking information, and the generating being performed by the device; and executing the compiled blocks in an order based on one or more of the program counter, the one or more type-based constraints, or the linking information, the executing the compiled blocks being performed by the device.