3 ms·
The AS/400 (now IBM i) platform has a neat feature: all application software is compiled into a sort of bytecode called TIMI, for Technology Independent Machine
by bitwize 1y ago
The AS/400 (now IBM i) platform has a neat feature: all application software is compiled into a sort of bytecode called TIMI, for Technology Independent Machine Interface. The use of TIMI is completely transparent to developers and is implemented at an OS level; you as a programmer do not get access to the underlying instruction set. When a program is run, if the OS does not detect a native-code "shadow" binary for the program, it will AOT-compile it from the program's TIMI code before running it. Among other things, this allowed IBM to convert their systems from AS/400 CISC to 64-bit POWER-architecture in one swift yank of the tablecloth, with all application software running 100% backward-compatibly on the new architecture.
But that's not the reason why TIMI was implemented. TIMI was implemented to fulfill an antitrust consent decree, under which IBM agreed to unbundle IBM hardware from software. But they still wanted to ship an OS with each system! So they declared that the OS was "firmware" and "microcode", hence part of the hardware, despite being loaded and booted from disk like any other OS. Anything considered "software" for the platform was written in TIMI.
So here we indeed have a bright-line distinction between OS and application code; between platform and business logic. Such a sharp definition is pretty rare in the industry.