All,
The latest BaCon version 3.0 is ready for consumption and can be obtained from the
BaCon website.
This is a major step towards an efficient transcompiler, containing huge changes and improvements in the overall design:
- Previously, BaCon included its complete library with all functions in each program. Now, a new compile scheme has been implemented where only the functions actually being used in a program will be taken from a generic BaCon archive. This reduces compile speed and the size of the resulting binary.
- The variable type detection mechanism has been re-implemented from scratch. Instead of a plain file search it is now based on in-memory detection. This also improves the overall conversion performance, which now is approx. 70% faster.
Next to this there are some other highlights:
- CMDLINE function to conveniently parse command line parameters
- correct detection and automatic casting in floating point assignments
- copying of indexed arrays using COPY
- lots of code cleaning and improvements
See the
full list of changes for more details.
BaCon releases are made available after testing on several platforms, including Tru64Unix, Solaris, MacOSX and several flavors of Linux.
Thanks to the BaCon community for notifying issues, reporting bugs and suggesting improvements!
For long time users, please pay attention to the following remarks:
Installing BaCon 3.0(1) To install BaCon on your system, start by running the configure
script:
# ./configure
(2) This script checks the requirements on your system and should
finish successfully. A Makefile will be generated.
Then start building the BaCon binary by executing:
# make
(3) This will create a static archive containing BaCon functions.
Also the BaCon console version and GUI version are created.
To install BaCon, simply execute:
# make install
Compatibility with earlier BaCon versionsThough the BASIC syntax and API has not changed, it occasionally may
happen that older programs cannot be converted. The following hints
should help to troubleshoot such problems.
(1) Starting from 3.0, BaCon uses a new and optimized variable detection
mechanism. This mechanism is faster and more precise. Now global variables
with a certain name cannot be used in combination with local variables
using the same name.
Solution: either change the name of the global variable, or consistently
declare variables using LOCAL.
(2) The IF/THEN/ELSE statement can be used in two ways. The first way
is an IF/THEN/ELSE which contains a body with statements, ending with an
ENDIF. The second way is an IF/THEN/ELSE containing one single statement
on the same line, where no ENDIF is needed.
The problem is that it cannot be detected which ELSE belongs to which IF
in case of nested IF/THEN/ELSE statements.
Solution: combinations of IF/THEN/ELSE with a body and without a body
are not allowed anymore. Such combinations of IF/THEN/ELSE have to be
rewritten. Either use IF/THEN/ELSE each with a body, or use IF/THEN/ELSE
each with a single line.
A note to beta testersBefore installing BaCon 3.0, please make sure that old beta versions of
the BaCon archive are removed from your system. This archive can have the
name 'bacon.a' or 'libbacon.a'.
Regards and happy converting!
Peter