Hi.
I'm a newbie in free pascal. Please explain me. What will i lose using KOL/MCK in my applications. How is this small code achieved ?
KOL is a complete framework, like the FCL/LCL, and supports ANSI and UNICODE16 . That means that in principle it is not possible to mix rtl/lcl classes with KOL code. It also has a kind of automatic memory management, actually preemptive mm for its widgets/controls (AddToAutoFree).
What we did is create a old school object that can represent any windows control without inheritance(although inheritance is possible) and auxiliarly objects like streams, Lists, stacks, Queues, threads and more. It is really quite complete, even for complex programs. But NOT compatible with RTL/LCL. The mirror kit is able to show them as components and use them as components, though, but the mirror kit is not maintained by me: I never used it.
The small size is achieved by highly optimized code, on the border of being silly. It comes close to the size of pure assembler code with a penalty of just under 4k if all possible optimizations are used.
For newer programmers it is not as easy as for old hands that still remember
object instead of
class.
Another defining characteric is that it has some features of functional programming before that was main stream.
Most calls can be chained, since most are functions, so your sourcecode also becomes shorter.
The KOL sourcecode is a nightmare to read, but it is easy to generate documentation for it. It is possibly the hardest test for a Pascal parser, but both FreePascal and Delphi are supported. I know of only 5 people - including me -, most of them core developers, that can safely edit the sources.