He's shriveled!
(parody of David Blaine)
(This paragraph was added on 10.2010 in conjunction with KOL / MCK release 3.00).
KOL was originally aimed only at saving code, not system resources such as memory. Starting from version 3.00, the code has been reworked so that the size of TControl object instances has been reduced by about 6 times. First of all, due to the fact that the fields used by various types of controls do not overlap, and they were combined using a structure with variable content (record CASE). In addition, more than 600 bytes occupied by method pointers for processing messages began to be created dynamically only for those controls for which message handlers were assigned (and this is often far from all controls, for example, many panels and labels, and input fields are completely dispensed with message handlers). Same, how the dynamic structure TCommandActions began to be created and used (about 80 bytes) - now the application allocates one such object for a separate kind of control, instead of storing this record inside the fields of each TControl instance. In addition, about 40 bytes of flags, which previously occupied one byte for each Boolean flag, were compressed into several bytes, with one bit being spent on the flag.
As a result, the memory consumption for the TControl instance has been reduced from more than 1.5 KB to 300-350 bytes, excluding the optional event block (depending on the set of compilation options used). It is assumed that such an approach, in the case of adapting innovations in the version intended for Windows CE (KOL-CE branch), will help create applications that are less demanding on RAM. But for the main branch of the KOL project, saving memory can also be useful.