- Changes:
- Platforms / languages:
- Supporting programming languages C++, Java, Python is
stopped. The previous version 0.90.8 is still available to
download;
- A support for compiling Pascal code with Free Pascal added
(console applications + utf-8 output to console).
- Syntax:
- It is allowed to call CALLBACK functions from
CALLBACK functions without warnings about that;
- It is not now required for CALLBACK functions to be
not public (a warning was firing earlier);
- Optimizations (in code size):
- For the compiler, an analyze added if event handlers were
not created / methods were not overridden, to allow removing
redundant native code responsible for calling them / preparing
data for calling them (brackets in form //?{class} ... //.
or //{class}.function ... //. in a target language code
which is copied from low level units);
- Records {rect}, {point} + correspondent
functions are moved from the class {Canvas} to the
separate class {Geometry}; the record {from_to}
moved from {Memo} to {Control};
- the class
{Long_operation} file was moved to a separate folder Long_operation, and a fake mirror class is created in a
separate folder Long_operation dummy;
- all the code to work with the tray icon was moved from
{AL4_form} to new class {AL4_tray}; code to work with fonts also
moved from {AL4_drawing} to {AL4_font};
- Delphi: an option $NOLONGOP added
(preventing adding code for checking for long operations);
- Delphi/KOL: option $NOERR adds also the
option MATH_NOERR to the project options (and also NOERR as earlier);
- In a generated code a method is not marked as
"virtual/override" if it was found that it is not called;
- Calling initializations procedures for unused classes is
turned off (though classes itself were could left in code still
its declarations are necessary e.g. its RECORD
declarations);
- An algorithm of finding unused classes/method is improved;
- after a lot of changes on the code and in the compiler a
simplest GUI application having a single form on Delphi/KOL
occupies 38 KBytes (earlier it had about 160+ Kbytes);
A minimal application without GUI has about 10.5 KB
(w/o compressors, compressing allows decrease size to about
6.5 KB). In comparison to about 11.5 Kbytes for
C#.NET empty form application, the minimal visual KOL
application size 38 KBytes can seem too large, but do not forget
that:
- a C# application binary can be running not on each PC:
it requires certain .Net Framework to be installed. A KOL
application can be run on any PC having Windows/Linux+WinE
(even on Windows NT4/98);
- C# do not use static linking by default since its
libraries are in Windows. At that time KOL application need
nothing except that it have;
- This can seems strange but for not exactly empty
application (when there are some controls on a form and the
application do something like accessing files), the KOL
application becomes about twice smaller then the C#NET
application with the same functionality. An exclusion is for
a starting DB application where C#NET initially has an
allowence.
- A modifier IMPORT, ANYWAY: {class} . is
introduced temporary. When the optimization is on, it prevents
removing classes imported with such flag. Also, native methods
never removed;
- The modifier NATIVE for functions is extended: now it
can contain a list of dependences in form NATIVE({class}, {class}.function,
...). Such list allows to prevent removing necessary classes
and its method in result of optimizations;
- Also, native methods are not removed (in contrast to native
functions);
- Compiling:
- C#: cs files are removed in the target folder automatically
so it is not necessary to clear it manually in case of changing
optimizations options;
- Delphi: similarly, pas files in a target directory are removed
just before compiling.
- Fixes:
- Delphi: generating of fields initialization in case of type
{Object} was skipped due to ambiguous optimization;
- Delphi: in the class {Paintbox}, the caret was not scrolling
together with the box;
|