[fpc-pascal] Free Pascal 2.4.0 released

Marco van de Voort marcov at stack.nl
Fri Jan 1 11:47:42 CET 2010


Happy New Year!

As a special present, We have placed a new major release of the Free Pascal
Compiler, version 2.4.0 on our ftp-servers.

Changes that may break backwards compatibility are documented at:
http://wiki.freepascal.org/User_Changes_2.4.0

Downloads are available at:

the main FTP server at

ftp://ftp.freepascal.org/pub/fpc/beta/2.4.0/

and

ftp://freepascal.stack.nl/pub/fpc/beta/2.4.0/

Enjoy!

The Free Pascal Compiler Team


                            Free Pascal Compiler

                                Version 2.4.0

******************************************************************************
                              What's New in 2.4.0
******************************************************************************

Free Pascal 2.4.0 contains many fixes and new features. While we did not
manage to incorporate all planned additions, we believe this release offers a
nice collection of new functionality and bug fixes.


Please also see http://wiki.freepascal.org/User_Changes_2.4.0 for a list
of changes which may affect the behaviour of previously working code, and
how to cope with these changes.

Some highlights are:

Platforms:
  * New platform: Mac OS X/PowerPC64
  * New platform: Mac OS X/x86_64
  * New platform: Mac OS X/ARM (iPhone)
  * New platform: Haiku/i386

Compiler:
  * Support for Delphi-style resource handling
  * Whole-program optimization infrastructure, which initially supports
    program devirtualization and unused virtual method removal
  * Much faster compilation of units containing many type-sections
  * The ability to suppress individual hints/warnings/notes
  * Several improvements to the DWARF debug information generation
  * Fixes to the generics support
  * Fixes to the interface delegation (implements) support
  * Improved cpu register allocation
  * Improved ARM/EABI support
  
RTL:
  * Linearly scaling multi-threaded memory manager
  * Support for (advisory) file locking on Unix-based platforms
    when using the SysUtils file creation/opening routines
  * Support for ANSI ISO Extended Pascal ReadStr/WriteStr
  * A UnicodeString type that, while not yet equivalent to Delphi 2009's
    UnicodeString type, offers reference counted UnicodeString support on
    the Windows, Linux, Mac OS X, FreeBSD and Beos/Haiku platforms.

Packages:
  * Many improvements to the XML units
  * Many improvements to the database units
  * Updated the common Mac OS X Pascal interfaces to r241, including
    header a translation of the CFNetwork framework
  * The zipper unit now works correctly on big endian platforms

See http://bugs.freepascal.org/changelog_page.php for the list of reported
bugs which have been fixed in this release.


******************************************************************************
                              What's New in 2.2.3
******************************************************************************

Free Pascal 2.2.3 contains many bug fixes and some new features. The 
main purpose of this release is to fix problems reported with FPC 2.2.2.

Please also see http://wiki.freepascal.org/User_Changes_2.2.4 for a list
of changes which may affect the behaviour of previously working code, and
how to cope with these changes.

Some highlights are:

All:
  * Experimental packages-installation tool

Packages:
  * Added support for TIFF reading/writing in fcl-image
  * Improvements and fixes in CHM support
  * Fixed linking the gtk2-package with gtk versions above 2.13.4

IDE:
  * Added support for CHM help files

Documentation

See http://bugs.freepascal.org/changelog_page.php for the list of reported
bugs which have been fixed in this release.


******************************************************************************
                              What's New in 2.2.2
******************************************************************************

Free Pascal 2.2.2 contains many bug fixes and some new features. The 
main purpose of this release is to fix problems reported with FPC 2.2.0,
and to remove all potentially tainted code from our source code base.

Please also see http://wiki.freepascal.org/User_Changes_2.2.2 for a list
of changes which may affect the behaviour of previously working code, and
how to cope with these changes.

Some highlights are:

All:
  *  All code potentially infringing on CodeGear copyrighted code has been
     reimplemented using a cleanroom approach.

Platforms:
  * Incompatibilities with Mac OS X 10.5's new default linker have been
    resolved.

Compiler:
  * PIC support for Mac OS X (on by default, disable with -Cg-)
  * several bugs in the experimental generics support have been fixed,
    but this feature is still in beta
  * initialisation and finalisation of shared libraries has been fixed
    for all Darwin platforms, and for Linux/i386
  * support for {$packset x} directive to enable set packing
    (use {$packset 1} for Delphi-compatible sets, but note that the
     format is different on little and big endian platforms)

RTL:
  * thread resource leaking under unix has been fixed
  * the widestring manager for unix has been completed
  * several floating point to string conversion errors have been fixed
  * significantly improved variant support
  * implementation of RTL exception handler for OS/2 allowing proper
    translation of some runtime errors
  * various fixes for GO32v2 improving useability of this target
  * OS/2 RTL enhanced to allow seamless working with large files (64-bit
    file system API calls) where available (WSeB/MCP/eCS/Warp 4 with FP15)

Packages:
  * the Windows API interface units have been significantly updated
  * Apple universal interfaces updated to r234 of the common FPC/GPC/MW
    interfaces
  * New TRegexEngine class to parse regular expressions

Documentation
  *  Documentation was updated completely to conform to the actual
     state of the compiler and RTL.

See http://bugs.freepascal.org/changelog_page.php for the list of reported
bugs which have been fixed in this release.


******************************************************************************
                              What's New in 2.2.0
******************************************************************************

Free Pascal 2.2.0 contains a lot of bug fixes and new features. The work on
Free Pascal 2.2.0 started halfway during the year 2005. A lot has been improved
since then.

Please also see http://wiki.freepascal.org/User_Changes_2.2.0 for a list
of changes which may affect the behaviour of previously working code, and
how to cope with these changes.

Platforms:
  * New platform: Win64. FPC is the first open source compiler for 64-bit
     Windows operating systems.
  * New processor architecture: 64-bit PowerPC
    * PowerPC/64 support for Linux
  * Mac OS X on Intel (i386) is now supported
  * New platform: Windows CE (Windows Mobile)
  * New platform: Nintendo Game Boy Advance
  * New platform: Nintendo DS
  * Native support for ARM-platform
  * GO32V2 DOS platform got a long needed update

Compiler:
  * Internal linker for win32, win64 and wince, resulting in smaller
    executables, less memory used during compilation, and faster compile
    times for programs using large frameworks like for example the Lazarus
    Component Library.
  * Generics (experimental)
  * Bit packed arrays and records
  * Resourcestrings can now be smartlinked, resulting in smaller executables
  * Multiple resource files support
  * pointer[low..high] syntax to pass C-style pointer arrays to procedures
    using open arrays
  * Interface delegation
  * Proper safecall implementation
  * Wide strings are COM/OLE compatible on Windows
  * Added several speed optimisations, for example:
    * Compiler can omit stack frames (x86 and ARM)
    * Compiler can store records in registers
    * Tail recursion expansion
    * Register renaming optimizations
  * Improved optimizer for ARM CPU
  * Compiler can initialise local variables, function results, and "out"
    parameters with several values (command line parameters -gt till -gtttt)
    to help find uses of uninitialised variables
  * Compiler can now properly deal with paths > 255 characters in all cases
  * Dwarf debug format support
  * Reduced memory usage during compilation
  * Lot of small bugs and compatibility fixes

RTL:
  * Heap uses less memory
  * Improved variants support
  * Improved currency support
  * Exception handling can be used without SysUtils unit
  * Lot of small bug and compatibility fixes

FCL:
  * Improved database support
  * The obsolete sqlitedataset, interbase, fpodbc, ddg, mysqldb3 and mysqldb4
    units are removed
  * Lot of small bugs and compatibility fixes

Packages:
  * Added a new fppkg package manager
  * Improved database support
  * Added Delphi compatible RichEdit unit
  * Apple universal interfaces updated to r204 of the common FPC/GPC/MW
    interfaces
  * Lot of small bugs and compatibility fixes

Free Vision:
  * Now uses resourcestrings

IDE:
  * Evaluate window
  * Improved HTML rendering
  * Improved xterm support
  * Small bug fixes

Misc:
  * Improved documentation
  * Better cross compilation support

For a detailed list of reported bugs that are fixed in this release see the
bugtracker report at http://www.freepascal.org/mantis/changelog_page.php


******************************************************************************
                              What's New in 2.0.4
******************************************************************************

More than 1000 changes have been made to 2.0.4 since 2.0.2. As this is a bug
fix release, most are fixes for some issues, but new features and performance
enhancements have been added as well.

Compiler:
  * Lot of small bugs and compatibility fixes
  * Updated several translations
  * Improved code generation
  * Improved and fixed PIC code generation
  * Improved register allocation
  * Improved ansistring string code generation
  * Several alignment values increased so the requirements of modern processors
    are met better
  * WINDOWS defined on all windows platforms (Win32, Win64, WinCE)
  * Parameter order for methods with structured results changed
    (result pointer<->self swapped), please check such methods if they are
    implemented in assembler
  * i386 compiler no longer needs environment variables set when installed on
    an x86_64 Linux distribution

RTL:
  * Lot of small bug and compatibility fixes
  * 64 bit file pointer support on most targets
  * Faster integer to string conversion
  * Endian conversion routines added
  * Improved heap manager
  * Improved ansistring routines
  * PowerPC: Power3/4/5/PPC970 compatibility

FCL:
  * Lot of small bugs and compatibility fixes
  * Improved database support
  * The interbase, fpodbc, ddg, mysqldb3 and mysqldb4 units
    are obsolete and replaced by the sqldb components
  * Oracle support added

Packages:
  * Lot of small bugs and compatibility fixes
  * Improved database support
  * Apple universal interfaces added

Free Vision:
  * New outline unit
  * Small bug fixes
  * Unix: much improved video and keyboard handling
  * Unix: Free Vision applications no longer need to link to libc
  * Linux: grab_vcsa utility to ensure vcsa access

IDE:
  * Small bug fixes
  * Redesigned directories window
  * Reorganised compiler options window
  * Option to use Ctrl+X,C,V for cut/copy/paste

Misc:
  * Improved documentation
  * Better cross compilation support

******************************************************************************
                              What's New in 2.0.2
******************************************************************************
This is a bug fix release, so don't expect a big new feature list here. Most
of the almost 700 changes made to 2.0.2 since 2.0.0 are fixes for some issues.

Compiler:
  * Lot of small bugs and compatibility fixes
  * Improved SSE support
  * Improved inlining
  * Enhanced variant support
  * Embedded resource support for targets using elf32 executable format
  + Type checking of compile time expressions
  + Mode MacPas: Support for Mac style objects
  + Mode MacPas: Compile time variables can be given on command line

RTL:
  * Lot of small bugs and compatibility fixes
  * Enhanced variant support
  * Embedded resource support for targets using elf32 executable format

FCL:
  * Lot of small bugs and compatibility fixes
  * Improved SqlDB package

Packages:
  * Lot of small bugs and compatibility fixes
  * Improved data base support

IDE:
  * Small bug fixes

Misc:
  * Improved docs
  * Bug fixes for FreeVision

******************************************************************************
                              What's New in 2.0.0
******************************************************************************
Compiler:
  + properties in objects are now allowed
  + use of cmov when at least -Cppentium2 is supplied (i386+ only)
  + .p is a searched source extension in macpas mode now
  * Improved MacPas mode
  * Improved variant support
  * Updated language files
  * Improved warnings regarding uninitialised variables
  * Lot of small bugs and compatibility fixes

RTL:
  * Several widestring and unicode fixes
  * Heavily improved variant support
  * Improved threading support
  * Improved 64 bit compatibility
  * Lot of small bugs and compatibility fixes

FCL:
  * Improved data base support
  * Lot of small bugs and compatibility fixes

Packages:
  + Jedi windows api is part of the packages now
  + Windows specific units of the rtl have been moved to packages/base/winunits
  + XFree header conversions to X package added
  * Endian and 64 bit fixes
  * Lot of small bugs and compatibility fixes

IDE:
  * Small bug fixes

Misc:
  * Improved docs
  * Bug fixes for FreeVision


                        Version 1.9.8 aka 2.0.0-Rc2

******************************************************************************
                      What's New in 1.9.8 aka 2.0.0-Rc2
******************************************************************************


Compiler:
  + arm-linux cross compiler for i386-linux
  + SysV style syscalls added for MorphOS
  + Exportable macros for mode MacPas
  + Support procvar declaration in parameters for mode MacPas
  + Give warning if code is never executed in while/if statements
  + Directive {$COPERATORS ON} added, synomym for -Sc
  + Check for uninitialzed from and to values in for-loop statement
  + -Fa<unit> option added to load units in a program before the uses statement
    is parsed
  + -vz for output to stderr
  * Better support for unique types
  * AfterConstruction/BeforeDestruction behaviour is now compatible with Delphi
  * Better support for Widestring
  * Removed {$THREADING ON} directive, threading support is always available
  * Improved code generation on Sparc
  * Lot of small bugs and compatibility fixes
  + On target Mac OS, resource files is supported

RTL:
  + arm Linux support
  * Basic threading support moved to the system unit
  * Operator ** moved to math unit; system.power removed
  * Improved variant support
  * Lot of small bugs and compatibility fixes
  + The unit MacOS (api to Mac OS) for target MacOS

FCL:
  + Support for Interbase/Firebird, PostgreSQL and MySQL 4.0 under windows
  * Database drivers are now dynamically loaded
  * The TSQLQuery is now fully editable using cached updates
  * Lot of small bugs and compatibility fixes

Packages:
  + gtk2 interface units
  * 64 bit compatibility fixes
  * Lot of small bugs and compatibility fixes

IDE:
  + vector unit window
  * x86-64 asssembler debugging support improved
  * Sparc asssembler debugging support improved
  * Some bug fixes

Misc:
  + txt output to fpdoc added
  * some fpdoc bugs fixes
  + demo for macos


                        Version 1.9.6 aka 2.0.0-Rc1

******************************************************************************
                      What's New in 1.9.6 aka 2.0.0-Rc1
******************************************************************************

Compiler:
  + x86_64/amd64 (Linux) compiler
  + Sparc (Linux) compiler
  + PowerPC MorphOS support
  + Mac OS (classic) compiler (for MPW)
  + Netware Libc support (-Tnetwlibc)
  + Register variable support (-Or) for all targets
  + MacPas compiler mode (-Mmacpas)
  * Better inlining support
  * For loop variable assignment is not allowed anymore
  * $fpctarget expands to <cpu>-<os> (except for 8.3 limited targets),
    old $target removed
  * Implicit loading of Variants unit
  * Lots of bug fixes

RTL:
  + x86_64/amd64 Linux support
  + Sparc Linux support
  + PowerPC MorphOS support
  + Mac OS (classic) support (except Sysutils and its dependants)
  + Netware Libc support
  + New heap manager that releases memory back to the OS
  + TThread.Synchronize support
  + utf8bidi unit
  + GetHeapStatus added
  + GetProcessID added
  + SysUtils.GetEnvironmentVariableCount and SysUtils.GetEnvironmentString added
  * gpm unit does not need libgpm anymore
  + Further additions for improved Delphi compatibility
  + System.GetProcessID and System.GetThreadID added
  + Dos.GetMsCount added
  + Support for changing console resolution in Video for Win32
  + Support for using high memory (> 512 MB) under OS/2 (where available)
  - Removed MaxAvail, MemAvail, HeapSize due to their unreliability
    (bogus/misleading return values) in multitasking environment with swapping

FCL:
  + RTTIUtils unit added
  + fpcunit test-framework added
  * Lots of dbf and other db fixes

FV:
  * Updated to fvision implementation, first official release

IDE:
  * Lots of improvements and stability fixes
  * Support latest gdb 6.2.x and 6.3.x releases

Docs:
  + Lots of updates
  + Easier to navigate html documentation
  * fpDoc is used to generate all unit documentation

Misc:
  * Makefiles create units in a separate directory units/cpu-os/
  * More cross compilation improvements


******************************************************************************
                      What's New in 1.9.4 aka 2.0.0-Beta3
******************************************************************************

Compiler:
  + ARM (Linux) compiler
  + PowerPC Darwin (Mac OS X) support
  + reintroduce keyword support
  + added prefetch(const mem) support
  + MacPas compile mode
  + -gv to generate an executable that can be run under Valgrind >= 2.1
  * register allocator fixes and tweaks
  * better support for preprocessor $IF expressions
  * better overloaded operator support
  * Win32 DLL export table fixes
  * stabs (debuginfo) generation cleanups
  * enum names in RTTI are now in their original case
  * record alignment fixes
  * lots of bug fixes

RTL:
  + ARM Linux support
  + Powerpc Darwin support
  + Sysutils.RaiseLastOSError added
  + Sysutils.GetLastOSError added
  + Classes.TOwnedCollection added
  + Sysutils.FileIsReadOnly added
  + support of widestring and currency in the typinfo unit
  * Better support for Libc based RTL (FPC_USE_LIBC)
  * 64bit cleanup for future x86_64 port
  * ExecuteProcess fixes
  * Linux use getdents syscall instead of deprecated readdir
  * bug fixes

FCL:
  + SDF DB backend
  + TGA support in fpImage
  + support of widestring and currency type in stream related classes
  * Lot of fixes to fpImage classes

Misc:
  * better cross development support
  * Documentation updates
  * Testsuite updates to store testrun results in a database
  * Testsuite updates for cross platform testing, with remote rsh/ssh support


******************************************************************************
                      What's New in 1.9.2 aka 2.0.0-Beta2
******************************************************************************

Compiler:
  + PowerPC compiler
  + sse/sse2 code generation support
  + "global" property support
  * improved inlining support
  * optimizer enabled again
  * uses register calling conventions by default
  * $fputype directive
  + properties of type single can have default values
  + support of $IF DECLARED()
  + support of DQWORD in inline intel assembler code
  * lots of bug fixes

RTL:
  * more improvements for unix runtime library
  * using FPC_USE_LIBC allows to compile an rtl which uses libc instead of
    syscalls
  + System.Initialize
  + Sysutils.ExecuteProcess
  + System.WideStringManager
  + System.PtrInt and System.PtrUInt
  * ipv6 support
  * lots of bug fixes

FCL:
  + sqlite support
  * bug fixes

Misc:
  * improved docs

******************************************************************************
                      What's New in 1.9.0 aka 2.0.0-Beta1
******************************************************************************

Compiler:
  + dynamic arrays
  + interfaces
  + variants
  + full widestring support
  + default parameters
  + cross name scope overloading
  + support for the PowerPC, Sparc and ARM processor, installation packages
    will follow within the next weeks
  + new and more sophisticated register allocator
  + inlining across units
  + register calling conventions
  + SSE and SSE2 support for inline assembler
  + PIC code generation
  + new language mode: "Mac Pascal"
  + full boolean evaluation is now also available
  + threadvar support, enabled by using {$threading on}
  * support of int64 integer constants
  * improved Delphi compatibility in -Sd mode
  * a lot of bug fixes
  * large parts of the compiler are rewritten to create a more stable,
    portable and maintainable compiler

RTL:
  + multithreading support
  * completely rewritten unix runtime library
  * improved Delphi compatiblity
  * significantly improved speed of exception related code
  * prepared for big endian and 64 Bit CPUs
  * a lot of bug fixes

FCL:
  + tdataset support
  + html generator
  + 64 Bit file handling
  * a lot of bug fixes

Docs:
  * adapted to reflect new language features

IDE:
  * a lot of bug fixes

Misc:
  * improved cross compilation





More information about the fpc-pascal mailing list