Recent ZBasic Compiler Revision History v3.3.3 - 14 January 2012 -------------------------- - Corrected a VM code generation issue with class methods. v3.3.2 - 09 January 2012 -------------------------- - Added support for #error and #notify directives inside class, structure and enumeration definitions. - Corrected code generation for class methods returning a structure or object. - Corrected a problem that would occur when the application defined a structure variable with the name "Version", thus conflicting with the built-in constants Version.Major, et al. - Corrected the notion of "User RAM size" for the mega644P-based VM devices. - Corrected a native mode code generation problem related to an unused based variable. - Corrected a problem resolving a reference to an overloaded procedure/method for object references when the object is local to a procedure. - Corrected a problem where non-class procedures were being matched on a procedure reference qualified by an object reference, e.g. Call bb.foo() was matching both foo() defined in the class of bb and a non-class foo() (assuming they otherwise had the same signature). - Added detection of duplicate labels in a procedure. - Corrected a problem with like-named methods having different class/structure parameters. - Fixed a native mode code generation problem for Register.IOScaling and Register.Console.Echo. - Corrected a native mode code generation issue for multi-dimension arrays when the lower bound was not the same on all dimensions. - Improved the error message on type mismatch for the integral division operator. - Corrected a problem with generating native code for the Integer value -32768. - Corrected a code generation problem for Register.Pin, Register.DDR and Register.Port for xmega devices. v3.3.1 - 12 March 2011 -------------------------- - Corrected native mode code generation for based methods. Also, modified the handling of #pragma CallTargets so that it works as expected when used within a class or within a method. v3.3.0 - 05 March 2011 -------------------------- - N.B.: this version requires ZBasic Library v3.3.0 or later. Note that this version introduces a new naming convention and directory structure for the ZBasic Library files (now called zlib rather than zxlib). - Added support for alternate I2C and SPI controllers on xmega devices. - Added support for software-based SPI (native mode devices only). - Added Option Console to allow a different serial channel to be used for Debug.Print, Console.Write(), Console.WriteLine(), Console.Read() and Console.Readline(). - Added support for specifying the zero-crossing interrupt for low-level X-10 operation. - Added Option.TargetFamily and Option.TargetMCU, replacing Option.CPUFamily and Option.CPUType, respectively, now deprecated. - Corrected native mode code generation issues for GetQueue and SetInterval. - Corrected a problem with accessing methods of a base class when the derived class has overloads, even when the overloads have a different signature. - Modified the analysis of structure/class members to avoid issuing error messages for Public members of Private structures/classes. v3.1.6 - 18 October 2010 -------------------------- - Added support for additional Oak Micros devices. - Corrected a problem where the Persistent Memory usage wasn't being reported correctly for native mode devices. v3.1.5 - 10 October 2010 -------------------------- - Corrected a problem in the optimization of conditional expressions involving Integer variables and negative constants. - Added checks for overloads with identical signatures in the default namespace. - Corrected a problem where Boolean values were being accepted where an 8-bit integral was required, resulting in an internal error during code generation. - Added a check to ensure that public variables are not of a privately defined type. - Added a check for a public class in a library. - Corrected a native mode code generation problem related to passing an Alias ByRef to a procedure. - Corrected a native mode code generation problem related to passing an Alias ByRef to a procedure. - Improved the native mode code generation for Delay(). Now using sleepTask() when the delay value is constant, thus avoiding unnecessary run-time FP calculations. - Corrected a native mode code generation problem with negation of a constant. - Added a missing case for native mode type conversion during code generation. v3.1.4 - 07 August 2010 -------------------------- - Added the ability to specify an index list with @var-name in initialization data. - Corrected a code generation problem related to a constant index expression on a StringVectorData data item. - Corrected a problem with references to members of a Private structure variable from within a function of the same type. v3.1.3 - 30 July 2010 -------------------------- - Corrected an access violation that would occur when referring to a non-existent procedure in a CallTask statement. - Corrected some VM code generation problem that would occur when referencing an element of an array of structures or objects passed to a procedure or when the array is local to a procedure. v3.1.0 - 09 July 2010 -------------------------- - N.B.: this version requires ZX Library v3.0.6 or later. - Added support for xmega-based devices: ZX-128a1, ZX-32a4, ZX-24x. - Added support for a single-line If statement. - Added missing validation for Option StringSize value. - Corrected a VM code generation error related to early exit from a Select Case block via a GoTo. - Modified the default heap size to be the larger of twice the Flash page size or 512 bytes. v3.0.3 - 07 April 2010 -------------------------- - Added support for Option Com1Speed for VM targets (requires VM v3.0.4 or later). - Added support for Option AtnChar and Register.AtnChar. - Corrected a code generation error for + . - Corrected a native mode code generation error for FixB(). It was generating the same code as for CByte() with a Single argument. - Corrected a native mode code generation problem for Pause() with a Single parameter whose value is not known at compile time. v3.0.2 - 01 March 2010 -------------------------- - Corrected a native mode code generation problem for the timer busy flags, e.g. Register.Timer1Busy. - Corrected an access violation that would occur if the left parenthesis is omitted following the method name in a class definition. - The Protected attribute wasn't being allowed for variables and constants. - Modifed the compiler to suppress the warning for abstract function methods that don't set the return value but aren't invoked. v3.0.1 - 24 February 2010 -------------------------- - Modified the class analysis to avoid generating references to otherwise unused classes. - Corrected native mode code generation for invoking a method of a ByRef member. - Corrected a code generation problem for (f ^ -2) where f is a Single value. v3.0.0 - 01 February 2010 -------------------------- N.B.: This version requires v3.0.0 or later of the ZX Library - Added support for ZBasic Object Extensions - Added support for serial channel flow control via ControlCom(). - Added a new read-only builtins Register.TaskStackMain and Register.TaskStackCurrent. - Added support for including pre-defined structures using "Option Include". - Added support for creating variables with the ByRef attribute. - Added support for the Volatile attribute for structure and class data members. - Added support for optional scaling and offset parameters on the subroutine form of GetADC(). - Added support for Register.TimerIOBusy and Register.TimerUARTBusy, these being synonyms for the corresponding timer busy flags. - Corrected an optimization error that could occur if a variable is aliased by creating a based variable at its address. - Corrected a VM code generation problem related to use of Mid() on the left of an assignment when the target string was a known constant. - Corrected some native mode back-end warnings that occurred when a bounded string or fixed string type was passed to a function. Corrected a back-end warning that occurred with the use of Register.HeapLimit. - Fixed a problem where Option PortPinEncoding wasn't working correctly.