After almost 5 years there is a new IDE Fix Pack 6.5 version available. Most of the development was done in early 2020, before I stopped working on the project. But because I had to add a bug-fix for Delphi 2009 to IDE Fix Pack, I thought that, with all those patches that were never released, I should make a new release.
IDE Fix Pack still “only” supports Delphi 2009 up to 10.3. There ist no 10.4, 11 or 12 release. I don’t have the time to re-analyze the IDE and compiler after many of the IDE Fix Pack patches were directly applied to the IDE’s/Compiler’s code base, what changed so many places in the compiler and IDE, that I would have to start from where I was in 2004.
Besides some smaller performance optimizations in the compiler (faster package linking, faster inline handling with lots of units, micro-optimizations) and the IDE, a new compiler extension option “-x–jdbg” was added. It generates a *.jdbg files without the need for a *.map file. With “-x–jdbg=2” it will attach the jdbg data directly to the binary instead of writing an extra file.
For Delphi 2009-XE the IDE Fix Pack 6.5 version will reduce the compile dialog’s update rate if it detects a Remote Desktop session allowing the internal compiler to spend more time compiling the code instead of transferring paint events to the RDP-Client.
And then there is the reason why I touched IDE Fix Pack after a long time. For Delphi 2009-XE2 a memory manager extension is injected into the compiler. And in two of the functions is an address calculation that uses a signed int. This works as long as you only have memory addresses that are less than 2 GB away from each other. And because those old IDEs don’t have the LargeAddressAware (>2GB) linker flag set, this will never happen. Unfortunately our main project runs out of memory after a handful of incremental compilations and I have to enable that linker flag to get access to the whole 4 GB address space. So I had to fix those two functions.
But what is with XE3 and newer? Well, with XE3 this memory manager extension got incorporated into the compiler’s code base. Thus this bug was also introduced. But with Delphi 10.0 (Seattle) it was detected and fixed. To sum it up, the new IDE Fix Pack fixes its own code for 2009-XE2 and patches the compiler for XE3-X8.
Oh, and then there is a special patch for the command line compiler. The CompilerSpeedPack (part of IDE Fix Pack) changes a linear linked list into a double linked list, making the remove operation a lot faster. Unfortunately, I never got this patch working for the IDE compiler because I wasn’t able to catch all places in the compiler’s code that manipulate that linked list directly. The compiler’s code (at least till 10.3) manipulates a lot of data structures directly instead of calling functions to do the job. Maybe this was a good idea in the 80’s, but from a “patching” side, it made the work extra hard and error-prone.
Download:
Name | IDE Version | File | Size | Downloads | Added |
---|---|---|---|---|---|
IDE Fix Pack 6.5 | 2009 (UP4) | IDEFixPack2009Reg65.7z | 260.46 KB | 509 times | 2024-05-29 |
IDE Fix Pack 6.5 | 2010 (UP5) | IDEFixPack2010Reg65.7z | 253.76 KB | 647 times | 2024-05-29 |
IDE Fix Pack 6.5 | XE (UP1) | IDEFixPackXEReg65.7z | 239.09 KB | 408 times | 2024-05-29 |
IDE Fix Pack 6.5 | XE2 (UP4+HF1) | IDEFixPackXE2Reg65.7z | 338.38 KB | 415 times | 2024-05-29 |
IDE Fix Pack 6.5 | XE3 (UP2) | IDEFixPackXE3Reg65.7z | 278.55 KB | 514 times | 2024-05-29 |
IDE Fix Pack 6.5 | XE4 (UP1) | IDEFixPackXE4Reg65.7z | 281.04 KB | 335 times | 2024-05-29 |
IDE Fix Pack 6.5 | XE5 (UP2) | IDEFixPackXE5Reg65.7z | 279.03 KB | 354 times | 2024-05-29 |
IDE Fix Pack 6.5 | XE6 (UP1) | IDEFixPackXE6Reg65.7z | 757.14 KB | 372 times | 2024-05-29 |
IDE Fix Pack 6.5 | XE7 (UP1) | IDEFixPackXE7Reg65.7z | 769.9 KB | 428 times | 2024-05-29 |
IDE Fix Pack 6.5 | XE8 (UP1) | IDEFixPackXE8Reg65.7z | 777.12 KB | 363 times | 2024-05-29 |
IDE Fix Pack 6.5 | 10 Seattle (RTM/UP1) | IDEFixPackD10Reg65.7z | 777.55 KB | 456 times | 2024-05-29 |
IDE Fix Pack 6.5 | 10.1 Berlin | IDEFixPackD101Reg65.7z | 776.63 KB | 472 times | 2024-05-29 |
IDE Fix Pack 6.5 | 10.2 (RTM/UP1/2/3) | IDEFixPackD102Reg65.7z | 790.89 KB | 721 times | 2024-05-29 |
IDE Fix Pack 6.5 | 10.3 (RTM/UP1) | IDEFixPackD103Reg65.7z | 802.28 KB | 783 times | 2024-05-29 |
Download (fastdcc for the command line compiler):
Name | IDE Version | File | Size | Downloads | Added |
---|---|---|---|---|---|
fastdcc 6.5 | 2009 (UP4) | fastdcc2009v65.7z | 129.36 KB | 349 times | 2024-05-29 |
fastdcc 6.5 | 2010 (UP5) | fastdcc2010v65.7z | 136.52 KB | 404 times | 2024-05-29 |
fastdcc 6.5 | XE (UP1) | fastdccXEv65.7z | 137.77 KB | 280 times | 2024-05-29 |
fastdcc 6.5 | XE2 (UP4+HF1) | fastdccXE2v65.7z | 185.48 KB | 370 times | 2024-05-29 |
fastdcc 6.5 | XE3 (UP2) | fastdccXE3v65.7z | 317.72 KB | 264 times | 2024-05-29 |
fastdcc 6.5 | XE4 (UP1) | fastdccXE4v65.7z | 379.09 KB | 262 times | 2024-05-29 |
fastdcc 6.5 | XE5 (UP2) | fastdccXE5v65.7z | 323.96 KB | 264 times | 2024-05-29 |
fastdcc 6.5 | XE6 (UP1) | fastdccXE6v65.7z | 523.06 KB | 389 times | 2024-05-29 |
fastdcc 6.5 | XE7 (UP1) | fastdccXE7v65.7z | 553.13 KB | 298 times | 2024-05-29 |
fastdcc 6.5 | XE8 (UP1) | fastdccXE8v65.7z | 558.75 KB | 265 times | 2024-05-29 |
fastdcc 6.5 | 10 Seattle (RTM/UP1) | fastdccD10v65.7z | 559.06 KB | 295 times | 2024-05-29 |
fastdcc 6.5 | 10.1 Berlin | fastdccD101v65.7z | 558.67 KB | 312 times | 2024-05-29 |
fastdcc 6.5 | 10.2 (RTM/UP1/2/3) | fastdccD102v65.7z | 574.82 KB | 344 times | 2024-05-29 |
fastdcc 6.5 | 10.3 (RTM/UP1) | fastdccD103v65.7z | 578.59 KB | 427 times | 2024-05-29 |
Changelog:
- Added: Fix for address calculation overflow in the compiler if IDE uses >2GB address space (XE3-XE8)
- Added: -x–jdbg compiler option extension that creates and attaches a .jdbg file
- Added: -x–unitstats outputs unit filenames for units with “unitname in ‘filename'” entries
- Added: IDE Project loading IsTypeLib call optimization (2009)
- Added: TComponent.FindComponent uses sorted list with binary search (2009)
- Added: Faster DLL export symbol reading especially for package compilation (2009-XE2)
- Added: Micro optimizations in the DCU reading code
- Added: Replaced crHandPoint with IDC_HAND cursor (2009 only)
- Added: Fix for RSP-23006: In Object Inspector, some text entries not fully visible (10.3+)
- Added: Reduce linker’s string comparision for System units (2009 only)
- Added: Lowered update rate for Compile Progress in RDP session, less painting more compiling (2009-XE2)
- Added: Faster StrIComp and StrLIComp (AnsiChar and WideChar) implementations
- Added: DFM ObjectTextToBinary optimization (less string comparisons)
- Added: Faster package compilation and cleanup
- Added: Faster MapFile Sort-By-Address
- Added: Some more micro optimizations
- Added: Linker micro optimizations (2009-2010)
- Added: Micro optimization for “uses” unitname resolving (2009-XE)
- Added: Symbol lookup micro optimization for ASCII identifiers
- Added: Faster compiler inline handling for projects with lots of units.
- Added: Faster unitname to unit filename resolving (unitname in ‘filename’)
- Added: Make and build initialize the units in the same order (2009-2010)
- Added: LoadString cache for compiler error/warning/hint messages
- Added: Commandline compiler uses double linked unit list to remove and reorder items faster
- Added: Optimized filename compare function also for XE and newer
- Improved: -x-fvs compiler option also generates faster interface call stubs for virtual methods that are final or in a sealed class.
- Improved: Filename compare function uses string-length if it is known
- Improved: Some micro optimization in hash bucket loops
- Improved: More SetLengthUninit utilization, resulting in less unnecessary ZeroMemory calls.
- Fixed: Compiler option extensions didn’t work in dcc*.cfg and project.cfg files
- Fixed: Don’t crash if a 3rdParty tool destroys the Castalia Clipboard Form
- Fixed: -x-cgo compiler option crashed the 10.3 compiler.