Releases: dmcoles/EVO
automated dev build {2024-07-24}
automated dev builds from latest source
v3.8.1
V3.8.0
(3.8.0)
- Added variable names + types and procedure line numbers to EVAR debug
info - Made multi-dimensional arrays memory layout more logical (first
dimension is most significant) - Fix global variable structure generated for library definitions
- Added object definitions to debug info
- Update EDBG to parse new EVAR structures
- Add SRCLINE define (current line number)
- Add SRCPROC define (current proc name)
- Added EVO_3_8_0 define
- Added support for ARRAY OF PTR TO ... in objects
- Fixed issue where two variables declared with the same initial value
did not get set correctly.
V3.7.0
(3.7.0)
- Compiler sometimes produced garbage error message with an error at the very
end of the file. - Reformatted the Amigaguide document to better fit in 80 columns.
- added Arexx compile scripts
- allow creating a new object directly into an object member
eg. self.a:=NEW self.a.method() - method table was not correctly initialised for objects declared as
eg. DEF a:b OR DEF a[5]:ARRAY OF b - heap in compiler is allocated with MEMF_CLEAR in compiler to ensure all
data in the exe is initialised to 0 and not contain random data from
memory - calling a method on an array element of an object did did not calculate
the correct address for the method. - compiler was creating 020 opcodes when accessing an array of objects
- added NIL pointer checks when calling methods on array of objects
- self variable was set incorrectly for methods declared with an exception
handler - fix issue with wrong opcode being generated in this code
DEF a
DEF b:PTR TO LONG
a:=[0,b[0]:=5]
resulting in the value not being stored correctly - include textfield module
- fix bug in reaction_lib with the freeClickTabs, freeChooserLabels and
freeRadioButtons functions not looping through the list correctly. - add support for long branch 020 instruction.
- fix invalid memory access when casting the result of a procedure call
to an object - fix inconsistencies with SIZEOF command
- fix error in branching code for the == operator
- add missing listview module
- add some extra functions in reaction_lib (openClass, openLibs,
closeLibs, libDoGadgetMethodA) - added PSIZEOF operator
- added ARRAYSIZE operator
- added SelectFirst function
- added debug symbols for methods
- allow CONT and EXIT within SELECT statement
- updated Rnd() function to be pure
- flagged openw, opwns, boolgad, settopaz, sets, gets functions as not pure
- added WARN TRUE/FALSE to enable/disable warnings
- added Rol() and Ror() functions
- the 020 variant of Mod() was not correctly used by the compiler and
was also taking the parameters the wrong way around - added 020 variant of ListItem function
- track line numbers for warnings
- NOREGS option was not correctly parsed on methods
- taking a reference to a method {obj.method} did not return the
correct address - 1.3 startup code now updates stack pointers to allow stack space
functions to return the correct values. - skip NameFromFH call on kick 1.3 meaning the compiler now works
on that OS again - NOT operator was very broken (inconsistently applied and in some cases
not applied at all) - Added EVO_3_7_0 define
- casting and PTR TO PTR handling is improved and should now work in all
use cases.
V3.6.1
(3.6.1)
- add checks for object going over 64k
- fix 020 optimised address calculation for array of object (or ptr to
object) indexing - added EXENAME and DESTDIR command line arguments to override the output
file name. - EDBG: Setting breakpoint caused crashes on certain versions of graphics.library
- fix casing for IeeeDPFloor and IeeeDPCeil
- Extend lists to handle 64k items instead of 32k.
- Fix #else preprocessor parsing issues
V3.6.0
(3.6.0)
- EDBG: add support for ECX/EEC compiled executables
- fix issue with memfill that could cause odd address exception on 68000
- add TRY..CATCH..ENDTRY allowing more control over exception handling
- Add UNTILN, WHILEN ELSEWHILEN, IFN, ELSEIFN, EXITN, CONTN which are
inverse of their counterparts eg. UNTILN x is equal to UNTIL Not(x) - Add WORD and BYTE types (unsigned 16 bit and signed 8 bit variable types)
and Word() Byte() functions as well as PutByte() and PutWord() - Allow SIZEOF object and SIZEOF object.member
- Fix issue where SIZEOF x didnt throw a compile error if x was not defined
- Added EVO_3_6_0 define
- Added Compare, Ucompare, Fcompare, StrCompare functions
- Fixed Int() function to sign extend result
- Added OPT LEGACYINT to restore old version of Int() command
- Added command line switch LEGACYINT/S which does the same as the above OPT
- Allow BYTE and WORD types in modules, increase module version to 13.
- FindModule: fix error in memory deallocation
- FindModule: update for BYTE and WORD types (module version 13)
- ShowModule: update for BYTE and WORD types (module version 13)
V3.5.1
(3.5.1)
- fix issue with short jump calculations being done incorrect in certain circumstances, causing crashes.
- fix casing of math ieee functions to match original E modules
- disable OPT POOL and OPT UTILLIB in legacy mode
- disable THISTASK, __POOL and UTILITYBASE in legacy mode
- reinstate [] in immediate list to previous E functionality (a blank 0 item list)
- fix optimisation issue where MOVE.B (A0),D0 and MOVE.W (A0),D0 followed by TST.L would be optimised incorrectly.
- fix issue with immediate lists, ListMax() could not be used as the max size was not populated.
- allow 0 length lists to be created eg List(0)
- add showhunk source
V3.5.0
This version brings in many of the features from the creativE E compiler and
also adds many new features unique to E-VO as well.
- Added ac020 object with pad int to allow optimised 32 bit writes on
020+ courtesy of Samuel D. Crow
- When compiling in debug, disable the optimisation that removes LINK,
UNLK in procs where not needed (EDBG doesnt step properly when these
aren't present)
- EDBG: Add case insensitive search
- EDBG: Added search next
- EDBG: Display variable values in both hex and decimal
- Fixed: Clears an extra byte in the String() initialisation causing
memory corruption in the case of String(0)
- EDBG: Enhanced breakpoints - multiple can now be set and can be
seen/set in a column next to the code
- EDBG: Support for multiple breakpoints and debugging while code is
running.
- EDBG: Added support for debugging under OS4.x (eg without using CPU
exceptions)
- EDBG: Added support for adding watch variables by entering name
- Added support for DEBUG50 mode which allows debugging using JSR
instructions instead of causing cpu exceptions which allows debugging
under OS 4.x
- Added support for multi-dimensional arrays
- Added support for PTR TO PTR variables
- Added EVO_3_5_0 define
- Added ? operator (ported from CreativE)
- Added OPT FPEXP (fpu floating point support - ported from CreativE)
- Added :=: swap operator (ported form CreativE)
- Added OPT INLINE (ported from CreativE)
- Added OPT NOSTARTUP (ported form CreativE)
- Added OPT UTILLIB (ported from CreativE)
- Added NOREGS option (ported from CreativE)
- Updated module format (now version 12) to account for multi-dimension
arrays and PTR TO PTR type in object members
- Ported some optimisation code from CreativE
- Added ENDPROC WITH function (ported from CreativE)
- Added == operator (range check - ported from CreativE)
- Added new system constants TAG_DONE, TAG_END, TAG_INORE, TAG_MORE,
TAG_SKIP, TAG_USER, OFFSET_BEGINNING, OFFSET_BEGINING, OFFSET_CURRENT,
OFFSET_END (ported from CreativE)
- Added new utilitybase variable
- Added 020+ optimised MOD function
- Added support for += -= etc operators (ported from CreativE)
- ShowModule: Added support for new module format (version 12)
- Added improved LONG,INT,CHAR routines from CreativE which allow
expressions
- Added improved SIZEOF command that allows SIZEOF objectvar
- Allow \xNN for hex char in strings
- Add ELSEWHILE and ALWAYS extension to WHILE LOOP (from CreativE)
- Improvements to SELECT x to allow expressions (from CreativE)
- Added LEGACY option to output module format version 10 and disable newer
features
- Fix: 2 << obj.val was generating corrupt code
- Add SECTION (code and data) support
- Fix: ReadStr return value was not completely compatible with EC (fix
Pragma2Module bug)
- ShowModule: Add -e parameter which will force output into a form that
can be directly recompiled
- Added a scanf module in the other folder
- Allow string consts in modules
- Allow float CONST definitions
- Remove some unused startup code when OPT ASM in use.
- ShowModule: Added support for string CONSTs
- Added OFFSETOF to get the offset of a member of an object
- Added MemFill, AstrClone, ListInsItem, ListRemItem, ListSwapItem functions
- EDBG: Support for sections
- FindModule: Coded new FindModule application from scratch with support
for latest module format.
- Make second parameter of SetStr optional and if not specified it will
set the calculate the string length automatically
- Added EndsWith function eg EndsWith(s,'A') returns TRUE if a string1 ends
with string2
- Fix: CHAR '' or CONST STR='' would cause memory corruption
- Fix "3*SIZEOF LONG" error
- added AstpCopy and UsedStack and StackSize functions