AL-IV:    Versions history


May, 7, 2018 - new version: 0.90.3

  • Changes:
    • Great progress in compiling to the Python: simplest GUI applications are compiling and working;
    • Python: {Clipboard} works now via tkinter (GUI library for the Python), so it is not necessary to install additionally (pyperclip);
    • {Paint_turtle}: sinse in Windows 8 incorrect colors can be returned by system functions, the 'BUTTON_TEXT' color is now used as a default normal color, and the method Set_normal_color added to set a desired normal color;
    • All visual tests are moved from AL4\Library\Visual to AL4\Test_visual_projects; OTLv4.h now is searching in %OTL% directory (%OTL% environment variable is required);
  • Fixes:
    • {Stream}.Get_line ==> can now load lines from unix text files (#LF - ended);
    • C#: {Button} autosized height was too low in systems with large font set, now recalculated on base of default font;
    • C++: {Random}.Probable ==> returned 0.0 always;
    • C++: analyzing errors was too suspicious: for case of any word "error" in an output it decided that it is not necessary to run compiled tests/application.




April, 12, 2018 - version: 0.90.2

  • Changes:
    • It is disabled to use ++/-- operations in expressions containing also && / || operations;
    • Good progress in compiling to the Python: console applications are compiling and working (under Windows and Linux);
  • Fixes:
    • Operations IN/!IN are disabled for case of checking a real number value inclusion into an array of real numbers.




April, 12, 2018 - version: 0.90.1

  • Changes:
    • {Stream}: faster loading strings in ANSI encoding;
    • C++: compiler option $SSTRINGS abandoned;
  • Fixes:
    • Delphi/KOL: Write_file_stream did not write any;
    • C#: loading text in an ANSI encoding;
    • Delphi/VCL: it was running 100% one processor core always;
    • Optimization with "inlining" a function body is not accepted if an "inlined" function itself calls functions from the classe which is not importing in the target function (otherwise there are problems in a target compiler).
  • IDE AL4:
    • fixes and improvements (see in Ide_al4.al4 at the end of source file).
    • Pascal (partial) syntax highlighting added;
    • Painting speed increased.




April, 8, 2018 - version: 0.90.0

  • Added:
    • Compiling the AL-IV project to a Python program. For now, for console applications only. (The test project Hello_world is compiling and working).
  • Changes:
    • Unbalanced quotations errors is replaced by a warning after the END.
  • Fixes:
    • Using '" ... "' not in the first line of a multi-line string;
    • Delphi/KOL: Running compiled application in earlier OS (Windows NT4);
  • IDE AL4:
    • fixes and improvements (see in Ide_al4.al4 at the end of source file).
    • syntax highlighting added for other programming languages (now, implemented for Python and FoxPro).



March, 21, 2018 - version: 0.89.3

  • Changes:
    • A semantics of the modifier TESTED was changed: a construction TESTED(nn) now means that class is tested at least on nn%. The TESTED modifier without parameters as well as for case when UNTESTED is not specified means that the class is proclaimed to be tested on 100%. Too strong proclaiming (with a gap more then 5%) is accounting as an error;
    • The language syntax: A special string literal format is added:
      '"..."' - such string constants can be placed only in separate lines of code, restricting it using mainly with long (multi-line) string constants; such strings allows to write any quotations to be written in a string except the ("') pare of quotations used only at the end of such triple-quoted string; therefore the way to check balancing quotes is still working for all other lines of code;
    • The language syntax:: Multi-line comments format is changed. Comments should start with the symbol */ and ended with /*. AL-IV code always should be located between symbols /* and */ as it would be comments for another language even if only AL-IV code is found in a file;
    • The DEBUG statement now can be written only in uppercase, the debug variant is no more supporting.
  • IDE AL4:
    • fixes and improvements (see in Ide_al4.al4 at the end of source file).


March, 16, 2018 - new version: 0.89.2

  • Changes:
    • Compiling of the compiler with C++ (code of AL4.h, AL4.cpp was moved to separate files from the compiler code, so its final adoption to a final project string options became possible);
    • C++ applications for Linux can now be built in Linux with the AL-IV-to-C++ compiler prepared to work in Linux;
  • Fixes:
    • C++: array[].Insert(At, Value);
    • C++: {System_functions}.Parameter(i) ;
    • C++, Delphi, Java: {System_functions}.MIN_INT (typo FFFF_FFFF instead of 8FFF_FFFF);


March, 11, 2018 - version: 0.89.1a

  • Fixes:
    • Compiling C++ visual projects;
    • C++: {Canvas}.Offset (previous change was incorrect);
    • C++(GCC): assigning records, assigning to an item of an array of records;
    • C++ (MSBuild): target DC transformations are off


March, 10, 2018 - version: 0.89.1

  • Changes:
    • A capability added to compile C++ visual projects with GCC (for Linux);
    • {Bitmap} is drawn without any transformations set to the destination {Canvas} by Draw and Stretch_draw methods: destination point specified is always assumed relative to the top-left corner of the canvas - the reason is that not all platform support such bitmap draw operation natively and sufficiently fast, at least in Linux X this can be a problem;
  • Fixes:
    • Compiling C++ visual projects;
    • Building C++ projects via MSBuild;
    • C++: {Canvas}.Offset (ambiguous conversion to pixels before the translation);
    • C#: {Canvas}.Arc(...., FALSE);


March, 5, 2018 - version: 0.89.0

  • Changes:
    • A capability added to compile C++ console projects with GCC (for Linux); For now, compiling of the test code and running it are processing in the Windows. Then, final c++ project is created together with a command file _call_gcc.cmd to run in Linux. After compiling/building in the Linux, the executable is created and can be launched there.
  • Fixes:
    • Creating a console with keyboard input capability in a windowed project for C++ (MS Windows);


February, 26, 2018 - version: 0.88.0

  • Changes:
    • A capability added to compile C++ projects with GCC (for Windows) (with the key /$GCC);
  • Fixes:
    • compiling generic functions (see AL4\Test_projects\_Test_sort and class {Sorting});
  • IDE AL4:
    • fixes and improvements (see in Ide_al4.al4 at the end of source file).


February, 18, 2018 - version: 0.87.4

  • Fixed:
    • better scrolling in classes {Paintbox}, {Paint_lines} (C#);
    • C++, Delphi: saving compiler messages to Compiler_messages.html on a test stage was prevented (in case when the compiler is a part of a compiled application);
  • IDE AL4:
    • fixes and improvements (see in Ide_al4.al4 at the end of source file).


February, 14, 2018 - version: 0.87.3

  • IDE AL4:
    • showing localized errors and warnings;
    • showing/editing localized source code;
    • fixes and improvements (see in Ide_al4.al4 at the end of source file).


February, 12, 2018 - version: 0.87.2

  • Changes:
    • tests in a class are not performed again if the class was not changed and there were no changes in classes on which it depends on (all the target languages/platforms);
    • Tests for the class {Form};
  • Fixes:
    • C++: visual application with {Paintbox} descendants could crash on form create (too early calling paint event);
    • all the warnings/errors now are written to the Compiler_messages.html (some messages were not stored there);
    • compiling a function call from a TEST function could lead to creating an incorrect (non-compilable) code;
    • compiling the ending TEST block could be interrupted earlier because of too optimistic prediction of iterations amount;
    • {Form}.Set_left (C++, Java);
    • C++: tests for GUI-applicationa are compiled for and executed in a GUI mode (rather then in console mode) - otherwise it is not possible to test GUI applications;
  • IDE AL4:
    • fixes and improvements (see in Ide_al4.al4 at the end of source file).


February, 7, 2018 - version: 0.87.1

  • Changes:
    • Added: {Screen}.Default_font_size (default value is 10 pt);
    • automatic sizes for buttons, labels, check boxes in columns aligned 'TOP' and 'BOTTOM' - by text size in those controls (C#);
    • C#: tests in a class are not performed again if the class was not changed and there were no changes in classes on which it depends on (current version does not take into account changes in TEST  functions though);
  • Fixes:
    • Delphi/KOL: the option NIL_EVENTS is added now (without it, problems while executing) ;
    • Java: automatic sizing of {Label};
    • Java: setting custom font size for controls;
    • Tools\Test_report updated (to work in any directory where AL-IV is installed);
  • IDE AL4:
    • fixes and improvements (see in Ide_al4.al4 at the end of source file).


February, 04, 2018 - version: 0.87.0

  • Changes:
    • Delphi/KOL, C++: implementation of dynamic string arrays was changed;
    • C#: {System_functions}.Platform_info contains Windows version and .NET version;
    • Pseudo-array DATA[] is accessible now in static functions too, not only in methods of a class;
    • Reading of text files in UTF-8 encoding became faster (C++, Delphi);
  • Fixes:
    • Creating fixed arrays of Boolean (Delphi/KOL);
    • Generating a DEBUG block having variable declarations (Java, Delphi);
    • Ending modal dialog (C++);
    • c++: compiling visual projects with the option /$NOSSTRINGS;
    • C++: comparing SString strings;


January, 29, 2018 - version: 0.86.9a

  • Fixes:
    • Returning modal dialog answer;
    • Calculating {Control}.Bounds (Delphi/VCL);


January, 29, 2018 - version: 0.86.9

  • Changes:
    • AL-IV can now be installed on any disk (a path to the installed folder should be stored in the environment variable "AL4");
  • Fixes:
    • For the {Dialog}: calling Hide now can also be used to end a modal dialog; other fixes (Delphi/VCL, Delphi/KOL, C#, Java);
    • Generating Report_leaks (C++, for options /$Strings==std and /$SSTRINGS);
    • Dynamic arrays of Boolean (Delphi);


January, 26, 2018 - new version: 0.86.8

  • Fixed:
    • capturing mouse for a {Paint_tabs} (Delphi/VCL);
  • IDE AL4:
    • Fixed: incorrect positioning in text by mouse click;
    • Fixed: deleting text from memory together with closing tab;
    • Fixed: auto-completion after '.' (suggesting fields, methods, etc.);
    • Improved: taking into account (()) nesting hinting function parameters;
    • Added: hints on class/record constructors {Type}(... by CTRL-SPACE;


January, 24, 2018 - version: 0.86.7

  • Fixes:
    • {Control}.Set_foreground / Set_background;
    • {Bitmap}.Load (C#);
  • Added:
    • {Paint_turtle} - a button with a glyph drawn by a "turtle";
    • An application Tools\Turtle_image to prepare turtle images (supports underlying images);
  • IDE AL4:
    • tool buttons added for some often operations: save, find, undo, compile);
    • fixes and improvements (see in Ide_al4.al4 at the end of source file).


January, 23, 2018 - version: 0.86.6

  • Fixes:
    • Compiling {OpenGL} projects;
  • Changes:
    • {Paint_tabs} - animation with auto-scroll is not now started by clicking a tab with a left mouse button (only with a right mouse button);
  • IDE AL4:
    • localization, translation to Russian;
    • fixes and improvements (see in Ide_al4.al4 at the end of source file).


January, 19, 2018 - version: 0.86.5

  • Fixes:
    • Assigning an object in a dynamic objects array (Delphi);
  • Changes:
    • {Long_operation} - finished for C++, Delphi/KOl, Delphi/VCL.
  • IDE AL4:
    • fixes (see in Ide_al4.al4 at the end of source file).


January, 19, 2018 - version: 0.86.4

  • Fixes:
    • {Canvas}.Reset_transorm -> ResetTransform;
    • MIN_INT = 0xFFF_FFFFF -> 0x8FFF_FFFF;
    • Code generating to work with fixed arrays in some cases;
  • Changes:
    • FOR loops ...TO MAX_INT] and DOWNTO MIN_INT] are disabled. In case of non-constant to-value equal such value, the loop can be not executed at all (C#, C++) since actually a for (...; < to_value; ...) is used where to_value = value+1 (and in case of MAX_VALUE+1 it becomes equal to MIN_VALUE);
  • Added:
    • {{Long_operation}, automatic showing a progress long operation dialog with a capability to cancel the operation (changes are in {Screen}, {Form}, {AL4_form} and in the core: for C#, C++);
  • Changes:
    • Some improvements, better navigation on symbols (CTRL-ENTER);
    • Other improvements and fixes (see in Ide_al4.al4 at the end of source file).


January, 12, 2018 - version: 0.86.3

  • Fixes:
    • Trim, TrimL, TrimR (C#: C# native Trim does not remove '\0' chracter);
    • Code generation to work with fixed arrays (C#, Delphi, C++);
  • Added:
    • option key /norun (compatible with /run, but only the last is applied);
    • the rest of options following /@ path-of-configuration also is handled, at the end of options in a configuration file;
  • Changes:
    • It is now possible to compile project from the IDE, and to list errors/warnings from a special window, including compiling without running;
    • Other improvements and fixes (see in Ide_al4.al4 at the end of source file).


January, 7, 2018 - version: 0.86.2

  • Changes:
    • It is now possible to compile project from the IDE, and to list errors/warnings from a special window.


January, 4, 2018 - version: 0.86.1

  • Changes:
    • {Form}.Set_column_auto_arrange(BOOL) - allows to turn off automatic placing controls on the column and to place and size it by your own code (e.g. in the form event "resize").
    • a compiler outputs all the errors and warnings to Compiler_messages.html also.
  • Fixed:
    • {Form}.activated event;
    • Platform_info (Delphi/KOL);
    • {Form}.key_press (Key.Alt, Shift, Control, Win did not set - Delphi KOL, VCL);
    • function TEST returned FALSE in a test mode;
  • A documentation is completed in part:
    • AL-IV: How to start programming


December, 29, 2017 - version: 0.86.0

  • Changes:
    • Additional optimizations in C++ code:
      • SString class to optimize strings manipulations;
      • graphics output in classes {Canvas}, {Bitmap}, {Paintbox} ... made via Windows GDI;
  • Fixed:
    • optimization of CASE could form an erroneous code.
  • The first time the editor Ide AL4 is published, version 0.86 (betha).


December, 17, 2017 - version: 0.85.9

  • Changes:
    • A function added {Font}.List_fonts(Options, Names[]);
    • Optimization is turned on for a C++ when building with the /final option (can be off by the option /$NOOPTIMIZE);
    • Additional optimizations in C++ code;
  • Fixed:
    • cursor shape for {Paintbox} is set only for its box not affecting its scroll bars (C#, Java);
    • Optimization errors (replacing a method call with its body);
    • Generating unique method names in class descendants (for names not matching by registry case only - Delphi);
    • Checking for a necessity of import of classes used implicitly (in FOR/PUSH statements);
    • Working of a file filter in Java (in Windows addFilenameFilter is not working but there is a non-documented "feature" with setFile method);
    • Fonts anti-aliasing (Java);


December, 11, 2017 - version: 0.85.8

  • Changes:
    • Friends of a class can access its non-public methods.
  • Fixed:
    • key_press event was firing for the key DELETE  thereas the DELTE key was not received in key_down/key_up events(Java);
    • setting cursor shape in {Paintbox}, beam shape cursor in {Paint_lines} (Delphi/VCL); also for Java-implementation cursor showing changed to prevent instant window repainting.


December, 7, 2017 - version: 0.85.7

  • Changes:
    • A statement
      FRIENDS: {class1}, ... {classN} . added. Friends of a class can access its non-public fields and (later) methods.
  • Added:
    • Attributes "disabled", "checked" for menu items;
    • Encoded symbol #ESC added;
  • Fixed:
    • {Paint_tabs}: highlighting did not work for tabs left to the current;
    • {Form}.mouse_move - coordinates in the mouse field (Delphi/KOL);
    • Focusing {Paintbox} and its descendats by mouse click (Java);
    • {Listbox}.Clear; selection_changed event for {Listbox} ;
    • a method for array of STR: Remove(STR) (Delphi, Java);
    • Double destroying controls on closing form (C++/wx);
    • {Paint_tab} .Move_tab(From, To);


December, 2, 2017 - version: 0.85.6

  • Changes:
    • Comparing for equality (==) and inequality (!=) is not allowed for REAL values;
    • For {Form} columns in Java implementation only vertical scroll bars left;
  • Added:
    • {Sorting} .Data_sort(Count) - to sort arbitrary data (methods data_compare and data_swap should be overridden in the same object);
  • Fixed:
    • {Listbox}.Insert_item in the Count position;
    • code generation for assigning a record to an array of such type records (Delphi);
    • event click firing on right mouse button (Delphi/VCL,KOL, C++);
    • {Text_file}.Save: saving text in 'UTF8' format (Delphi, C++);
    • inserting an item to a dynamic array of BOOL or BYTE (Delphi);
    • size of the first label in a column (for columns aligned 'LEFT', 'RIGHT' or 'CLIENT') is set to column.Label_width value (Java);
    • pop-up menu coordinates when a control is clicked (Java);
    • {Dialog_file}.Select_file (Java: bug in Java 7 & 8);
    • flickering is removed in {Paintbox} and its descendants (Java: Jpanel from swing was used instead of Canvas from awt);


November, 27, 2017 - version: 0.85.5

  • Added:
    • {File_path}.File_info(Path) ==> {file_info} (dates, attributes, size);
    • In addition to a symbol @, which turns on mode in which new line symbols are added in a multiline string constant automatically, a symbol @@ added which allows to turn such mode off (to the end of a constant or to the next symbol @);
    • {Form}.shown event;
    • Methods of {Edit} class: Set_selection_range(Start, Length), Select_all, Get_selection_start, Get_selection_length;
    • Method {Control} .Set_selection is abandoned and replaced to Replace_selection;
  • Fixed:
    • event mouse_double_click (Delphi/VCL), - sequence of calls was DOWN-UP-DBLCLICK-DOWN-UP instead of normal DOWN-UP-DOWN-UP-DBLCLICK;
    • code generation for case of creating a structure containing a fixed array (C#);
    • code generation for assigning a value to a record field if a record is from an array (C++);
    • On press Ctrl+[, ] and some other keys a field Key.Char was not assigned to a correspondent character;
    • event click firing for default and cancel button when Enter/Escape is pressed (Java, C++);
    • preserving the Screen object on all the time while an application is running, closing all the forms at the moment when the main form is closed (Java, C++);
    • still now for C++ all the resulting sources are united into one big cpp-file to speed up project compiling. The problem is that after 65536 lines it is not possible to make breakpoints. Now, for very large resulting projects in C++, large output source files are splitting onto enough small ones.


November, 22, 2017 - version: 0.85.4

  • Changes:
    • A requirement added on code structure: block statements (CASE, FOR, FOREVER, PUSH, DEBUG, debug) must always start from a new line (i.e. it is not allowed to write those in the same line following ELSE or in CASE branches follwing ':' or '?').
    • While calling a Str|ing embedded function to convert value to string, its name can be reduced to S.
  • Fixed:
    • direction in vertical_wheel (Java, Delphi/KOL);
    • Setting {Paintbox}.Set_content_size less then current Visible_area_size (by width, height - Delphi/VCL);
    • Setting modifiers Ctrl, Alt, Shift in the field {Form}.Key for all the mouse and keyboard events (Java);
    • {Paint_lines} always stores values set by the method Move_top_left_to (for both vertical and horizontal directions) and returns it in case when a difference between that value and a correspondent scrollbar position is less then 1 in absolute value (this fixes rounding problem which occur in result of rounding to nearest integer of a value assigned to a scrollbar current position property);
    • C# compiler errors analyzing: not only word "error" is checking but its neighboring characters to ensure that error is not a part of longer word (i.e. a class name);
    •  code generation for STORED parameters (C++);
    • generating [].Delete(index++) (in case when index is auto-decremented or auto-incremented).
  • A small present to myself for anniversary a year from the first publication: an own code editor for AL-IV started (and sufficiently progressed). It is planned to finish its developing up to the end of the year.


November, 15, 2017 - version: 0.85.3

  • Added:
    • {Control}.Location ==> {rect} - control coordinates in a parent form rather then (Left, Top returning coordinates relatively to a parent column).
  • Fixed::
    • Generating code for NATIVE directives not starting from "using" (C#): moved into a resulting class;
    • Optimization in case of inlining of a function containing in an expression a type cast of class: RESULT = x.y.z.{Some_class};
    • {Control}.Top (Delphi/KOL);


November, 12, 2017 - version: 0.85.2

  • Changes:
    • on C++ code generation, in function Main following code is added: _CrtSetDbgFlag(0); (to prevent very long delay while reporting about memory leaks, on the application end - though these are not memory leaks actually but results of STL working).
  • Added:
    • A enumeration {Paintbox}.{cursor}, a field Cursor|_shape, a method Set_cursor(New_c|ursor_shape)
      -- it seems does not work for Delphi VCL (VCL bug?);
  • Fixed:
    • Generating code for NATIVE directives not starting from "using" (C#): moved into a resulting class;
    • {Canvas}.Measure (C# incorrectly calculates size for a string having trailing spaces);
    • special key codes handling (C++/wx);
    • code generation  for PUSH statements in CASE branches (C++ compiler can not initialize local variables);
    • For the {Paintbox} (and its descendant {Paint_lines}) when the option "F" is set (focusable), then all the navigation keys are handled in the control itself (all the languages/frameworks);
    • {Localize_str} for Java - in case when Set_directory_lang was not called;
    • {Paint_lines}.provide_caret (Java) - removing old caret before setting new one.


November, 9, 2017 - version: 0.85.1

  • A capability provided to use variables of class {Object} (and assigning NONE to them).
  • Added:
    • {Canvas}.System_color({system_color}, enumeration {system_color};
    • A capability to add a timer for any control for animation purposes (mainly), methods {Control}.animate(Count, Interval) and animation(Tick) (a callback event);
    • Own mouse events handlers for {Control} class: mouse_move, mouse_down, mouse_up, mouse_wheel;;
    • A visual component {Paint_tabs}:
  • Fixed:
    • {Canvas}.Offset , Measure - pixels were used, now current units of the canvas are used (default are points);
    • mouse coordinates {point} mouse for all the mouse events (in Java & C++);
    • pop-up menu coordinates for {Tray_icon} (C++);


November, 5, 2017 - version: 0.85.0

  • A capability added to specify parameters restrictions in form of comparison relations, e.g.:
    , IF P1 IS CONST, THEN P1 >= 0 ...
  • Fixed:
    • {Canvas}.Offset, Rotate - made the same for all the frameworks.
    • calling {Form}.resize event provided on form maximize / restore (Java).
  • A control {Paintbox} with content scroll is finished.
  • A visual control {Paint_lines} (based on {Painbox}) added with support of blinking caret and specific methods to handle lines.



Previous versions history (2016-2017)

See here