ecx50.notes === (1.5.5 Nov 2006) === - FIXED: The new powerpc optimisations had some bugs, fixed. Thanks Gelb! - FIXED: Assignment to array variable was unnoticed and just produced wrong code. Quite new bug. - FIXED: Using string formatting codes in #define body didnt work. (The problem was the "\" char.) Very old bug, surprised noone has noticed it (myself included :). - FIXED: More than 8 args to new ppc string formatting didnt work, fixed. Note: OPT MINSTARTUP is documented but not fully implemented yet. === (1.5.4 Nov 2006) === - FIXED: PPC multiplication with large immediate value was not supported, thx Gelb! - FIXED: EXPORT DEF from module did not work together with DEF in main IF the main globals where never used. Thx Gelb! - IMPROVED: internal globals execbase,dosbase,wbmessge etc, can now be dereferenced directly ala CreativE. Thx Gelb! - IMPROVED: more checks for array sizes. - FIXED: Allocating global arrays larger than 32k would give problems, FIXED. - IMPROVED: ECX now gives warning when user set stack is smaller than ECX estimate (like EC). - FIXED: ECX did not report giving returnvalue to module global, as error. - FIXED: Inline REAL didnt work, fixed. - FIXED: bug introduced in previous version concerning some special cases of comparison. - FIXED: More improvements and fixes to SELECT OF. - FIXED: Inline LHZX was wrong, and reading pointer to WORD was also wrong. - IMPROVED: Comment handling. there was problems with comments inside macro calls, thx Gelb. Due to some internal changes, old macros with comments in body would have to be recompiled.. - FIXED: PPC SetStr() did not put NIL-byte, thx Gelb! - IMPOVED: Made PPC Fabs() inline. old code using non inline fabs will still work. - FEATURE: ECX now supports "modification" (as i call it). x += y x.y[].z *= bla() etc.. see guide. - FIXED: Scrapped the built in powerpc stringformatting routines. ECX now uses exec.library/VNewRawDoFmt(). Old code will continiue to use the old versions of String formatting functions, but to be safe recompile them. See guide. - FEATURE: Added stringformatting codes \v, \x, \! (CreativE) - FIXED: A few bugs in EBNF descrition regarding expressions. - IMPROVED: ECX now finally takes proper advantage of PPC for math/bitwise computations. Also the fused multiply-add/sub instructions are used for floating point. === (1.5.3 Sep 2006) === - FIXED: SELECT OF had more problems. - FIXED: Some comparison bugs removed. - IMPROVED: FOR loop efficiency. - IMPROVED: One immediate string may now be 8000 chars even without "+". Thank Gelb - FIXED: Multiple return values from PPC internal functions was not right. - IMPROVED: Multiple return values may be used with 68k library functions now. Thank Gelb. === (1.5.2 Sep 2006) === - FIXED: PPC FastDisposeList() on a list with no entries could crash. - FIXED: IF ... THEN RETURN ELSE ... Did not work. Thanks UltraGelb. - FIXED: Taking address ({}) of local array would hit, now it generates error message. Thanks UltraGelb. - FIXED: PPC Quoted expressions did not work, now they do. Thanks UltraGelb. (68k does not work for now, check next version.) === (1.5.1 Aug 2006) === - FIXED: usage of "EMPTY" in library mode did not work. - FIXED: Double floating point bug. - FIXED: Global arrays of DOUBLE/REAL was not initialised properly. Thanks Gelb! - IMPROVED: ECX now reports too large define body size. - IMPROVED: ECX now checks sizeof objects and reports if too large. - FIXED: ECX didnt really check for too large local stacksize. It does now to 99% :) - IMPROVED: Length of one immediate list can now be 32767 entries long! Thank Gelb for nagging :) - FIXED: 68K exception handling called wrong handler. (muidemo.e now exits correctly) - FIXED: linedebug in modules could mess up resulting exe. - FIXED: More MACRO bugs. - CHANGED: MACRO args now DOES replace inside strings. - FIXED: untyped and ptr_to_float object members in modules had problems. - FIXED: Inline "PTR", "FLOAT" did not work. - OTHER: Miscellaneous smaller fixes and improvements. === (1.5.0 may 2006) === - FIXED PPC "var.memb.method()" sporadic wrong-compilation. - FIXED PPC "StringF(weekdaystr,'Today is \s.',weekdaystr)" bug. Made StringF() even faster in process. thx to Jean H ! - ECX accepted "AVERYLONGVALUE" as immediate value, FIXED. thx to Jean H ! - Trying to use CHAR/INT values in floating point expressions resulted in INTERNAL ERROR. It is now normal error. thx to UltraGelb ! - ViewCache tool would hang forever if modulecache semaphore for some reason was busy forever, FIXED. - "SELECT OF" would make code crash if value was -1 or max, instead of executing the DEFAULT statement, FIXED. - Inline data can now use "DOUBLE", immediate lists can be :DOUBLE. - Automatic .end() of local classes did not work. - Procedures/methods now supports up to 4 returnvalues in ppc mode, 3 in 68k mode. All returnvalues may be in float register now, or a mix. "*" can be used to define a general purpose returnvalue, see guide. - MACRO finally works! No support for local labels yet though. - Added EXENAME/K commandline argument. - Added morphos extended module ECXMODULES:exec/execbase.m - Powerpc List(), String(), DisposeLink() now uses the memorypool provided with the morphos dos process. - 68K List(), String(), DisposeLink() now uses internal memorypool (faster). - LIBRARYMODE did not set librarybase::lib.idstr, FIXED. thx to UltraGelb - Object with DOUBLEs in them wasnt automatically size-aligned to 4byte boundaries, FIXED. - Added Type-O-Mania: BYTE - like CHAR, but signed. WORD - like INT, but unsigned. FLOAT - like LONG, but is automatically 4byte aligned in objects. REAL - like DOUBLE, but might automatically change to larger floating point datatype on another target. (see guide!) Byte(), PutByte() Word(), PutWord() Float(), PutFloat() Real(), PutReal() Ptr(), PutPtr() "ARRAY OF PTR", "PTR TO PTR", inline "PTR bla" -> for future 64bit compatibility, see guide. NOTE: older versions of ECX may have problems of varying degrees with new modules compiled using new BYTE/WORD types. Use latest ECX! - Conditional compilation gets into trouble when using "#" (68k inline asm). FIXED. thx UltraGelb - 68K Library API: EC and ECX puts arguments in different registes by default, solution: always specify registers. example: "myfunc(A0,D0,D1)". Thx UltraGelb. - Some improvements on codequality / misc fixes. - Other notes: 68K DOUBLE support still incomplete. 68K inline asm still incomplete. 68K Library mode still not working. Lispcells still not implemented :) ObjectBrowser (updated) is now part of distribution (tools/ drawer) ModuleFromProto tool added to Bin/ drawer. See guide.