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
For Downloads, please use the FTP server at
ftp://freepascal.stack.nl/pub/fpc/dist/2.6.0/
and sourceforge
https://sourceforge.net/projects/freepascal/files/
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 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
See http://bugs.freepascal.org/changelog_page.php 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
For Downloads, please use the FTP server at
ftp://freepascal.stack.nl/pub/fpc/dist/2.6.0/
and sourceforge
https://sourceforge.net/projects/freepascal/files/
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 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
See http://bugs.freepascal.org/changelog_page.php 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
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++.
Das interessiert mich sehr, kannst du den Testcode zeigen?
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
mse hat geschrieben: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++.
Das interessiert mich sehr, kannst du den Testcode zeigen?
Martin
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.
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
carli hat geschrieben:wenn man bei den Strings einfach += macht.
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.
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
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.
So:
Code: Alles auswählen
ansistringvar[n1based]:= 'C';
? Da muss bei jeder Zuweisung auf uniquestring geprüft werden.
Probiere mal
Code: Alles auswählen
pansichar(pointer(ansisstringvar))[n0based]:= 'C';
Dabei musst du aber selbst sicherstellen, dass ansisstringvar einen referencecount von 1 hat, beispielsweise mit dem eventuell sowieso benötigten setlength().
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
mschnell hat geschrieben:ich gehe davon aus, das Du keine Unicode-Strings verwendest, sonst wird das sowieso furchtbar).
Warum denn? Die oben geschilderte Methode funktioniert auch mit UnicodeString und PUnicodeChar.
Re: FPC 2.6.0
mse hat geschrieben:mschnell hat geschrieben:ich gehe davon aus, das Du keine Unicode-Strings verwendest, sonst wird das sowieso furchtbar).
Warum denn? Die oben geschilderte Methode funktioniert auch mit UnicodeString und PUnicodeChar.
mschnell fand schon immer und grundsätzlich alles furchtbar, was mit Unicode zusammenhängt.
Da spielen irgendwelche Details gar keine Rolle. Das ist eher ein Art Phobie.