FPC 2.6.0
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
FPC 2.6.0
Hello,
first, FPC core wants to wish a happy 2012!
To start the new year with a bang, a new major release
of Free Pascal, version 2.6.0, was uploaded to our FTP servers.
Changes that may break backwards compatibility are documented at:
http://wiki.freepascal.org/User_Changes_2.6.0" onclick="window.open(this.href);return false;
For Downloads, please use the FTP server at
ftp://freepascal.stack.nl/pub/fpc/dist/2.6.0/" onclick="window.open(this.href);return false;
and sourceforge
https://sourceforge.net/projects/freepascal/files/" onclick="window.open(this.href);return false;
as much possible.
Enjoy!
The Free Pascal Compiler Team
Free Pascal Compiler
Version 2.6.0
******************************************************************************
What's New in 2.6.0
******************************************************************************
Free Pascal 2.6.0 is a new major version of the Free Pascal compiler.
Please also see http://wiki.freepascal.org/User_Changes_2.6.0" onclick="window.open(this.href);return false; for a list
of changes that may affect the behaviour of previously working code, and
how to cope with these changes.
Some highlights are:
Platforms:
* iPhoneSimulator target
Compiler:
* Many new language features:
* Objective-Pascal dialect, supported on all Mac OS X and iOS targets
* constref parameter modifier for "const by reference"
* Pascal boolean types with multiple sizes (boolean16/32/64)
* ISO 7185 language mode (except for I/O). Features amongst others:
* nested procedure variables
* non-local goto's
* Mac Pascal mode improvements
* nested procedure variables
* univ modifier
* Intrinsics
* sar (shift arithmetic right)
* bsf/bsr (bitscan forward/reverse)
* Delphi compatibility mode improvements
* Nested types, class variables and class local constants
* Advanced records syntax (no constructors yet)
* (for..in) Enumerators in records
* Class and record helpers
* Generic records, arrays and procedural types
* Delphi-compatibility of generics improved
* Scoped enumerations
* Custom messages for "deprecated" directive
* Ability to use "&" for escaping keywords
* New ARM code generator features
* ARM VFPv2 and VFPv3 floating point unit support
* Thumb-2 support
Packages:
* Many improvements to the rtl
* Many improvements to the database units (fcl-db)
* Objective-Pascal interfaces to Foundation, AppKit, CoreData and WebCore
* OpenGL headers updated to OpenGL 4.0
Details about these new features can be found at
http://wiki.freepascal.org/FPC_New_Features_2.6.0" onclick="window.open(this.href);return false;
See http://bugs.freepascal.org/changelog_page.php" onclick="window.open(this.href);return false; for the list of reported
bugs that have been fixed in this release.
first, FPC core wants to wish a happy 2012!
To start the new year with a bang, a new major release
of Free Pascal, version 2.6.0, was uploaded to our FTP servers.
Changes that may break backwards compatibility are documented at:
http://wiki.freepascal.org/User_Changes_2.6.0" onclick="window.open(this.href);return false;
For Downloads, please use the FTP server at
ftp://freepascal.stack.nl/pub/fpc/dist/2.6.0/" onclick="window.open(this.href);return false;
and sourceforge
https://sourceforge.net/projects/freepascal/files/" onclick="window.open(this.href);return false;
as much possible.
Enjoy!
The Free Pascal Compiler Team
Free Pascal Compiler
Version 2.6.0
******************************************************************************
What's New in 2.6.0
******************************************************************************
Free Pascal 2.6.0 is a new major version of the Free Pascal compiler.
Please also see http://wiki.freepascal.org/User_Changes_2.6.0" onclick="window.open(this.href);return false; for a list
of changes that may affect the behaviour of previously working code, and
how to cope with these changes.
Some highlights are:
Platforms:
* iPhoneSimulator target
Compiler:
* Many new language features:
* Objective-Pascal dialect, supported on all Mac OS X and iOS targets
* constref parameter modifier for "const by reference"
* Pascal boolean types with multiple sizes (boolean16/32/64)
* ISO 7185 language mode (except for I/O). Features amongst others:
* nested procedure variables
* non-local goto's
* Mac Pascal mode improvements
* nested procedure variables
* univ modifier
* Intrinsics
* sar (shift arithmetic right)
* bsf/bsr (bitscan forward/reverse)
* Delphi compatibility mode improvements
* Nested types, class variables and class local constants
* Advanced records syntax (no constructors yet)
* (for..in) Enumerators in records
* Class and record helpers
* Generic records, arrays and procedural types
* Delphi-compatibility of generics improved
* Scoped enumerations
* Custom messages for "deprecated" directive
* Ability to use "&" for escaping keywords
* New ARM code generator features
* ARM VFPv2 and VFPv3 floating point unit support
* Thumb-2 support
Packages:
* Many improvements to the rtl
* Many improvements to the database units (fcl-db)
* Objective-Pascal interfaces to Foundation, AppKit, CoreData and WebCore
* OpenGL headers updated to OpenGL 4.0
Details about these new features can be found at
http://wiki.freepascal.org/FPC_New_Features_2.6.0" onclick="window.open(this.href);return false;
See http://bugs.freepascal.org/changelog_page.php" onclick="window.open(this.href);return false; for the list of reported
bugs that have been fixed in this release.
Johannes
-
- Beiträge: 657
- Registriert: Sa 9. Jan 2010, 17:32
- OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
- CPU-Target: 64Bit
Re: FPC 2.6.0
Ich bin diesmal nicht so von der Feature-Matrix überzeugt.
Ich bräuchte so langsam mal ordentliche Code-Optimierung, insbesondere für Mengen. Und wenn das FPC-Team das nicht hinbekommt, weil es zu viel Arbeit ist, dann sollen die endlich mal ein LLVM-Backend bauen, mit dem ich die nötige Performance herausbekomme. Selbst bei der String-Performance, der Stärke von FPC, ist FPC 2x langsamer als optimierter Java-Code und 4x langsamer als C++.
Ich bräuchte so langsam mal ordentliche Code-Optimierung, insbesondere für Mengen. Und wenn das FPC-Team das nicht hinbekommt, weil es zu viel Arbeit ist, dann sollen die endlich mal ein LLVM-Backend bauen, mit dem ich die nötige Performance herausbekomme. Selbst bei der String-Performance, der Stärke von FPC, ist FPC 2x langsamer als optimierter Java-Code und 4x langsamer als C++.
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: FPC 2.6.0
Das interessiert mich sehr, kannst du den Testcode zeigen?carli hat geschrieben:Selbst bei der String-Performance, der Stärke von FPC, ist FPC 2x langsamer als optimierter Java-Code und 4x langsamer als C++.
Martin
-
- Beiträge: 657
- Registriert: Sa 9. Jan 2010, 17:32
- OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
- CPU-Target: 64Bit
Re: FPC 2.6.0
Ich bin momentan nicht zu Hause, aber du kannst dir den Code selbst zusammenreimen, es ist eine Art Escaper:mse hat geschrieben:Das interessiert mich sehr, kannst du den Testcode zeigen?carli hat geschrieben:Selbst bei der String-Performance, der Stärke von FPC, ist FPC 2x langsamer als optimierter Java-Code und 4x langsamer als C++.
Martin
Ein konstanter String wird Zeichen für Zeichen durchgegangen und gewisse "verbotene" Zeichen durch eine Ziel-Zeichenfolge ersetzt.
Die FPC-Version schien am Anfang wirklich die Nase vorn zu haben, wenn man bei den Strings einfach += macht. Allerdings war in Java und C++ empfohlen, den StringBuilder (Java) bzw. den Stringstream (C++) zu benutzen, wodurch die gute Performance dann zustande kam.
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: FPC 2.6.0
Das kann auch keine gute Performace bringen, weil der String ja immer wieder verlängert werden mus und ein re-allocate oft ein Kopieren erfordert.carli hat geschrieben:wenn man bei den Strings einfach += macht.
Besser erzeugst Du mit SetLength gleich einen String mit ausreichender Länge und trägst die Zeichen einzeln ein (ich gehe davon aus, das Du keine Unicode-Strings verwendest, sonst wird das sowieso furchtbar). Am Ende wird der String mit SetLength wieder auf die richtige Länge gekürzt.
-Michael
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: FPC 2.6.0
So:carli hat geschrieben: Ich bin momentan nicht zu Hause, aber du kannst dir den Code selbst zusammenreimen, es ist eine Art Escaper:
Ein konstanter String wird Zeichen für Zeichen durchgegangen und gewisse "verbotene" Zeichen durch eine Ziel-Zeichenfolge ersetzt.
Code: Alles auswählen
ansistringvar[n1based]:= 'C';
Probiere mal
Code: Alles auswählen
pansichar(pointer(ansisstringvar))[n0based]:= 'C';
Zuletzt geändert von mse am Fr 3. Feb 2012, 16:25, insgesamt 1-mal geändert.
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: FPC 2.6.0
Warum denn? Die oben geschilderte Methode funktioniert auch mit UnicodeString und PUnicodeChar.mschnell hat geschrieben:ich gehe davon aus, das Du keine Unicode-Strings verwendest, sonst wird das sowieso furchtbar).
Re: FPC 2.6.0
mschnell fand schon immer und grundsätzlich alles furchtbar, was mit Unicode zusammenhängt.mse hat geschrieben:Warum denn? Die oben geschilderte Methode funktioniert auch mit UnicodeString und PUnicodeChar.mschnell hat geschrieben:ich gehe davon aus, das Du keine Unicode-Strings verwendest, sonst wird das sowieso furchtbar).
Da spielen irgendwelche Details gar keine Rolle. Das ist eher ein Art Phobie.
