mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-11-04 08:19:36 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			123 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
This directory contains the sources of the Free Pascal Compiler
 | 
						|
 | 
						|
To recompile the compiler, use the batch file
 | 
						|
mppc386.bat
 | 
						|
 | 
						|
If you want to build a m68k version to cross compile from i386 to m68k
 | 
						|
use the batch file
 | 
						|
mppc68k.bat
 | 
						|
 | 
						|
If you want to compile/modify the compiler, please read first the
 | 
						|
programmers manual.
 | 
						|
 | 
						|
 | 
						|
Changes in the syntax or semantic of FPC:
 | 
						|
-----------------------------------------
 | 
						|
  28/01/99   implicit conversion from boolean to integer is not possible
 | 
						|
             anymore (solved several bugs) but this could lead to errors
 | 
						|
             on previously accepted code (PM)
 | 
						|
  01/02/99   c styled comments are supported (/* ... */), mainly
 | 
						|
             for the Sibyl sources of Medigo (FK)
 | 
						|
  02/02/99   class destructors take now two parameters: flag
 | 
						|
             if the helper routine should free the instance and
 | 
						|
             self pointer (FK)
 | 
						|
  22/02/99   PROTECTED and PRIVATE have now the same behavior
 | 
						|
             as in TP
 | 
						|
  09/03/99   small records and arrays passed by value to a function are now directly copied
 | 
						|
             into a 4 bytes parameter (needed for C and DLL calls) (PM)
 | 
						|
  11/03/99   the makefile.fpc is now also needed for the compiler and RTL, you can
 | 
						|
             find it in the base.zip package (PFV)
 | 
						|
  24/03/99   new directives UNITPATH,INCLUDEPATH,OBJECTPATH,LIBRARYPATH to
 | 
						|
             set the searchpaths where to find the files for that module (PFV)
 | 
						|
  25/03/99   new directive STATIC +/- or on/off , works like -St commandline
 | 
						|
             switch
 | 
						|
  02/04/99   rtl/cfg/ directory has been removed, it's not used anymore
 | 
						|
  15/04/99   FINALIZATION is supported
 | 
						|
  21/04/99   Default assembler for i386 changed to AT&T instead of direct
 | 
						|
  25/04/99   initialized vars supported in Delphi mode (only $J+ mode)
 | 
						|
             getting the address of an untyped const is now
 | 
						|
             forbidden as in BP
 | 
						|
  27/04/99   New unit format PPU016, you need to recompile all older units
 | 
						|
  01/05/99   Internal assembler. Assembler readers now support MMX,KNI
 | 
						|
             instructions.
 | 
						|
  12/05/99   rtl/utils/ directory moved to utils/. Moved the utils only needed
 | 
						|
             for compiler development to compiler/utils/
 | 
						|
  13/05/99   Classes are now only allowed in the ObjFpc or Delphi mode. Use
 | 
						|
             {$mode objfpc} or {$mode delphi}. Or from commandline -S2 or -Sd
 | 
						|
  16/05/99   Remove options -Up (use now -Fu) and -Fg (use now -Fl)
 | 
						|
  17/05/99   Redesign of ansistring temporary handling, please report
 | 
						|
             any problems
 | 
						|
  17/05/99   Most stuff of the objpas unit is now in the system unit
 | 
						|
             because the new temporary ansistring handling support
 | 
						|
             exceptions and exceptions need the class OOP model
 | 
						|
  18/05/99   The compiler will stop directly if there are errors in the
 | 
						|
             commandline parameters
 | 
						|
  16/08/99   DLL are relocatable by default (need to strip symbols)
 | 
						|
             -WN make non relocatable DLL (which can retain debug info)
 | 
						|
             for both type of DLL the prefered image base can be specified
 | 
						|
             with -WB1100000 for instance to get image base at $11000000.
 | 
						|
  08/09/99   pointer addition/substraction (only available in fpc,objfpc mode)
 | 
						|
             now uses the size of the type the pointer points to, just like
 | 
						|
             inc(),dec() already did. Now inc(p) is the same as p:=p+1.
 | 
						|
             But old code can be broken by this when there is a p:=p+4 then
 | 
						|
             it's now parsed like: p:=p+4*sizeof(type). To get the old situation
 | 
						|
             you can use typecasting: p:=ptype(pointer(p)+4).
 | 
						|
  08/09/99   class/object field return their offsets in the object/class. You
 | 
						|
             must access them self with loading the object/class pointer and
 | 
						|
             then create a reference where you add the field
 | 
						|
  07/11/99   Small change to property writing in PPU => all units
 | 
						|
             exporting classes with properties must be recompiled
 | 
						|
             (no new unit format, so be careful) (FK)
 | 
						|
  08/11/99   PP variable in Makefiles changed to FPC
 | 
						|
  14/11/99   makefile.fpc is not available anymore. You must now use fpcmake
 | 
						|
             which is available from the utils/. There is also an example
 | 
						|
             Makefile.fpc
 | 
						|
  15/02/00   The support of the fixed data type has been removed from the
 | 
						|
             compiler because
 | 
						|
                1. it is buggy
 | 
						|
                2. it is very seldom used
 | 
						|
                3. the single data type is faster on modern cpus (Pentium+)
 | 
						|
 | 
						|
             If still want to use it, you have to recompile the compiler
 | 
						|
             with -dSUPPORT_FIXED and recompile the rtl with that compiler.
 | 
						|
             To find out if the used compiler supports the fixed data
 | 
						|
             type, check the directive HASFIXED  (FK)
 | 
						|
  29/02/00   ORDERSOURCES released => PPU version change
 | 
						|
             this allows for a more correct include file hunting order.
 | 
						|
  01/04/00   fix the handling of value parameters in cdecl function
 | 
						|
  11/05/00   changed vmt handling to fix problems some problems
 | 
						|
             with overloading in objects
 | 
						|
  11/11/00   default parameter support
 | 
						|
  11/11/00   you can declare a pointer type with directive far; to make
 | 
						|
             it a farpointer. Only usefull for dos.
 | 
						|
  11/11/00   ptr() returns a farpointer instead of pointer. Becuase the
 | 
						|
             pointer result would be useless and only causing segmentation
 | 
						|
             faults. With the farpointer this would already be detected at
 | 
						|
             compiletime. To get the code working you can declare a pointer
 | 
						|
             with far; like:
 | 
						|
 | 
						|
             type
 | 
						|
               farlongint = ^longint;far;
 | 
						|
             var
 | 
						|
               timer : farlongint;
 | 
						|
             begin
 | 
						|
               timer:=ptr($40,$6c);
 | 
						|
               writeln(timer^);
 | 
						|
             end.
 | 
						|
  07/12/00   constant handling has been rewritten: hex constants <=$ffffffff
 | 
						|
             are now always parsed as unsigned numbers (because of the int64
 | 
						|
             constant support, the were always sign-extended before). This
 | 
						|
             may force you to add longint typecasts round hex numbers in
 | 
						|
             your programs to avoid range check errors.
 | 
						|
  10/04/01   Argument names are now checked if names are the same in the
 | 
						|
             both the forward (interface) and implementation declaration
 | 
						|
  13/04/01   It's not possible anymore (except in -So mode) to pass a cardinal
 | 
						|
             to a parameter declared with a "var longint". The same goes for
 | 
						|
             the other signed-unsigned like smallint-word and shortint-byte.
 | 
						|
  13/04/01   in FPC mode you're now always forced to use @ to get the address
 | 
						|
             of a procedure and load it in a procedure variable. Before it was
 | 
						|
             sometimes a bit more relaxed
 | 
						|
  03/06/01   hint directives (library,platform,deprecated) are parsed, but
 | 
						|
             futher ignored
 | 
						|
  03/06/01   varargs directive is supported
 |