paxCompiler updates
------------------------------------------------------------------------------
Version: 2.8. 
Status: Registered.
Build: 3 December, 2010.
Copyright (c) 2006-2010 Alexander Baranovsky
Author: Alexander Baranovsky
Web site: www.paxcompiler.com

New:

11 March 2010.

1. Fixed bug in the type cast processing for class types.
2. Added possibility to throw anonimous exception in Basic:
  Throw New Exception
  or
  Throw New Exception()
  (Imports SysUtils is not mandatory in this case).

12 March 2010.

 1. Fixed memory leak.

17 March 2010.

 1. Fixed bug in memory allocation for local variables.

18 March 2010.

 1. Fixed bug related to the Monitor field (Delphi 2010 only).
 2. Different import tables (see demo).

31 March 2010.
 1. Generation of Dll (see demo).

16 April 2010.
 1. Bug fix in implementation of try-finally statement.

6 May 2010.
 1. Fixed bug for case when event handler is virtual method.

7 May 2010.
 1. Bug fix in try-finally statement in Basic and JavaScript.
 2. Added extra checks for overloaded routines.

10 May 2010.
 1. Speed of compilation has been increased in 2 times.

12 May 2010.
 1. Fixed bug in the Exit statement.

14 May 2010.
 1. Fixed bug in TPaxEval component.

17 May 2010.
 1. Added new methods and properties to TPaxCompilerExplorer class:

   function GetResultId(SubId: Integer): Integer;
   function GetAncestorId(Id: Integer): Integer;
   procedure ExtractMembers(const Id: Integer; L: TStrings;
                            PaxLang: TPaxCompilerLanguage = nil);
   property Kinds[Id: Integer]: TPaxMemberKind read GetKind;
   property StrKinds[Id: Integer]: String read GetStrKind;

18 May 2010.
 1. Added new function SetImportEntry to PaxRegister unit.

20 May 2010.

 1. Added routines:

procedure LoadGlobalSymbolTableFromStream(Stream: TStream);
procedure LoadGlobalSymbolTableFromFile(const FileName: String);
procedure SaveGlobalSymbolTableToStream(Stream: TStream);
procedure SaveGlobalSymbolTableToFile(const FileName: String);

  to PaxRegister.pas. See demo.      

21 May 2010.
  1. Speed of saving/loading binary namespaces increased in 2 times.    

24 May 2010.
  1. Fixed bug in the cilcular unit reference check.     
  2. Added import 
    RegisterHeader(H_TObject, 'function ToString: String; virtual;',
      @TObject.ToString);
    RegisterHeader(H_TObject, 'function Equals(Obj: TObject): Boolean; virtual;',
      @TObject.Equals);
    RegisterHeader(H_TObject, 'function GetHashCode: Integer; virtual;',
      @TObject.GetHashCode);
    (Delphi 2009 and Delphi 2010).

27 May 2010.
  1. Fixed memory leak problem.
  2. Decreased footprint of TPaxProgram instance.   
  3. Added improvements to paxcomp_rti.pas.                            
28 May 2010.
  1. Fixed bug in TPaxInvoke component. 

4 June 2010.
  1. Fixed bug for Raise and Exit statement for case when it is called in main block.
  2. Fixed bug in RegisterRecordTypeField method.
  3. Fixed bug for case when field of OLE object is a keyword.
  4. Correct error message for default parameter of Variant type.

7 June 2010.
  1. Fixed bugs related to "==", "!=" operators in JavaScript.
  2. Correct error message for case like
      TMyClass = class(NotAClassTypeIdentifier);
  3. property OnSavePCUFinished: TPaxCompilerSavePCUFinishedEvent;
     property OnLoadPCUFinished: TPaxCompilerLoadPCUFinishedEvent;
  4. Fixed memory leak for "array of const" parameter applied in a loop.

9 June 2010.
  1. Support of "message" keyword in Pascal.
  2. Fixed in implementation of Raise/Throw statement.

11 June 2010.
  1. Memory leak related to "array of const" parameter has been fixed.
  2. Bug fix in TPaxEval component.

14 June 2010.
  1. Support of "message" keyword.

18 June 2010.
  1. Support of dynamic methods.

21 June 2010.
  1. Fixed bugs for case when property reader/writer belongs to an ancestor class.

23 June 2010.
  1. Fixed bug for open array parameter of script-defined procedure.

25 June 2010.
  1. Support of "deprecated" keyword.

30 June 2010.
  1. Fixed dynamic memory leak for case when TPaxProgram.Run is called in a loop.

9 July 2010.
  1. Fixed bug in OLE Automation support.

12 July 2010.
  1. Support of static methods in Pascal (related to "STATIC" keyword).

13 July 2010.
  1. Fixed bug in evaluation of inherited constructor for case when its name differs
     from 'Create' (Pascal).
  2. Fixed bug for overloaded call.
  3. Fixed bug in Exit statement in try-except block.

14 July 2010.
  1. Fixed bug in the "inherited" keyword support.

15 July 2010.
  1. Added possibility to create inherited JavaScript classes.

2 August 2010.
  1. Fixed bug in for-in statement for set types.

12 August 2010.
  1. Fixed bugs related to the safecall calling convention.

4-17 September 2010.

  1. New events

     property OnBeginProc: TPaxProcNotifyEvent
     property OnEndProc: TPaxProcNotifyEvent

     of TPaxProgram class. They occurs at the beginning and at the end of a function in the debug mode.

  2. property PausedPCU: TProgram 

     of TPaxProgram. It returns pcu unit which was stopped at the pause state.

  3. property PCUCount: Integer read GetPCUCount;

     of TPaxProgram. Returns number of pcu units which are used given TPaxProgram instance.

  4. New methods

     function GetCurrentFunctionFullName: String;
     procedure GetCurrentParams(result: TStrings);
     procedure GetCurrentLocalVars(result: TStrings);

     of TPaxProgram. Return current function name in the paused state, current parameter names, 
     current local variable names. It was added to simplify building of expressions for evaluator.

  5. New methods

     function AddTempBreakpoint(const ModuleName: String;
                              SourceLineNumber: Integer): Boolean;
     function RemoveBreakpoint(const ModuleName: String;
                             SourceLineNumber: Integer): Boolean; overload;
     function RemoveBreakpoint(const ModuleName: String): Boolean; overload;
     function HasBreakpoint(const ModuleName: String;
                          SourceLineNumber: Integer): Boolean;
     function IsExecutableLine(const ModuleName: String;
                             SourceLineNumber: Integer): Boolean;
     procedure RemoveAllBreakpoints;

     allows to manipulate breakpoints directly via TPaxProgram instance.

  6.

     property OnPrintEx: TPaxPrintExEvent 
     allows to assign custom print event handler to the TPaxProgram class.

  7. New properties of TPaxCompiler class:

     property WarningCount: Integer read GetWarningCount;
     property WarningMessage[I: Integer]: String read GetWarningMessage;
     property WarningModuleName[I: Integer]: String read GetWarningModuleName;
     property WarningLine[I: Integer]: String read GetWarningLine;
     property WarningLineNumber[I: Integer]: Integer read GetWarningLineNumber;
     property WarningLinePos[I: Integer]: Integer read GetWarningLinePos;

21 September 2010.

  1. Added warnings:
       wrnNeverUsed = 'Variable "%s" is declared but never used';    
       wrnNotInit = 'Variable "%s" might not have been initialized';
       wrnReturnValue = 'Return value of function "%s" might be undefined';

5 October 2010.
  - Fixed bug in the implementation of "inherited" keyword.
  - Fixed bug for virtual constructors.

6 October 2010.
  - Fixed bug for structured typed constants.
  - Fixed bug for passing dynamic arrays by reference.
  
19 October 2010.
  - Code completion for second, third ... parameter. I.e
     P(4, 'abc', // code completion at coma

26 October 2010.
  - Increased speed of code completion.

3 December 2010.
  - Added processing escape sequences to JavaScript.