IDE Fix Pack – How do I know, I didn’t break the compiler

By | October 2, 2015

If I add a new patch to the compiler speed pack, I need to know if the compiler still does the same (but faster). The first indication that I broke something is, that the compiler throws an access violation. The second indication is if the compiler finished, but the lines of code, code size or data size doesn’t match the original compiler’s values. But even that doesn’t guarantee that it isn’t broken. The next step is to call the original and the patched function and compare their results and modified data for every call. But sometime there is just too much modified data or I don’t know what data was modified. So calling both functions in one compiler run doesn’t work. In that case I need to write the results to a file and compare the data with the next compiler run. For this I use a very large project and rebuild it completely, including the RTL, VCL, components and project units. This covers a lot of cases and some corner cases. After that I can’t do more because I can’t unit-test the compiler.

Unfortunately RAD Studio 10 Seattle has a problem with the Win64 compiler. The compiler’s output of the code and data size always changes. That is without the compiler speed pack, just the original DCC64.EXE that was installed by the RAD Studio Installer. This makes it impossible for me to verify that I didn’t break the compiler with my patches.

After some research I must say that the 10 Seattle’s Win64 compiler’s generated code isn’t deterministic anymore (same input doesn’t generate the same output). It’s like the compiler uses the Random function to allocate CPU registers, so it could be an uninitialized variable somewhere in the compiler. The Win32 compiler and the XE8 and older Win64 compilers aren’t affected by this. So this is a regression bug for 10 Seattle.

https://quality.embarcadero.com/browse/RSP-12512

DDevExtensions and DFMCheck re-release for RAD Studio 10 Seattle

By | September 19, 2015

The DDevExtensions 2.83 and the DFMCheck 1.5 are re-released for RAD Studio 10 Seattle. No changes or new features except for the RAD Studio 10 Seattle support are included, so the version number doesn’t change. It is a simple recompile.

DDevExtensions

Name IDE Version File Size Downloads Added
DDevExtensions 1.61 5-2007 DDevExtensions161Setup.zip 734.07 KB 20325 times 2009-01-10
DDevExtensions 2.8 Features PDF DDevExtensionsFeatures.pdf 602.92 KB 18200 times 2014-12-27
DDevExtensions 2.4 7, 2007 DDevExtensions24Setup7_2007.zip 535.41 KB 13273 times 2011-07-25
DDevExtensions 2.86 2009-10.3 DDevExtensions286.7z 1.24 MB 6168 times 2020-05-30
DDevExtensions 2.88 2009-10.4.2 DDevExtensions288.7z 1.3 MB 5531 times 2021-07-20

DFMCheck

Name IDE Version File Size Downloads Added
DFMCheck 1.6 5-10.3 DfmCheckSetup16.7z 717.43 KB 3090 times 2018-12-08

Byte-Strings for Delphi 10 Seattle’s mobile compilers

By | September 1, 2015

Delphi’s NextGen compilers (Android, IOS) removed support for UTF8String, AnsiString and RawByteString. But if you look into System.pas you see that those types are still there but Embarcadero makes them inaccessible from outside of System.pas by prefixing them with an underscore that the compiler converts to the at-sign. And you can’t write “@UTF8String” as it is not a valid identifier.

By patching DCU files it is possible to make those hidden types accessible. And guess what, the compiler generates correct code for the “unsupported” strings.

The unit System.ByteStrings reintroduces:

  • ShortString
  • AnsiString
  • AnsiChar
  • PAnsiChar
  • PPAnsiChar
  • UTF8String
  • PUTF8String
  • RawByteString
  • PRawByteString

Usage:
Add the System.ByteStrings.dcu’s path to the compiler’s search path and add the unit to your uses clauses.

There is no *.PAS file because the DCU is patched with a hex editor to get access to the hidden types.

Name IDE Version File Size Downloads Added
System.ByteStrings XE5 RTM/UP1 only XE5ByteStrings.7z 2.45 KB 1578 times 2013-10-23
System.ByteStrings XE5 UP2 only XE5Up2ByteStrings.7z 2.85 KB 1504 times 2013-12-20
System.ByteStrings XE6 XE6ByteStrings.7z 2.89 KB 1337 times 2014-04-16
System.ByteStrings XE7 XE7ByteStrings.7z 2.89 KB 1667 times 2015-01-20
System.ByteStrings XE8 XE8ByteStrings.7z 3.69 KB 1724 times 2015-04-16
System.ByteStrings 10 Seattle D10ByteStrings.7z 3.67 KB 1906 times 2015-09-01
System.ByteStrings 10.1 Berlin D101ByteStrings.7z 3.72 KB 2376 times 2016-05-31

IDE Fix Pack 4.4 for Delphi 2007 – Windows 10 Edition

By | August 4, 2015

For all developers that got stuck at Delphi 2007 and who want to upgrade to Windows 10 can now use the special “Windows 10 Edition” of IDE Fix Pack 4.4 for Delphi 2007. The “Windows 10 Edition” also supports Windows 8.1.

Requirement: Delphi 2007 December Update.

Download:

Name IDE Version File Size Downloads Added
IDE Fix Pack XE2 4.5 XE2 UP2 only IDEFixPackXE2Reg45.zip 125.47 KB 4883 times 2011-11-02
IDE Fix Pack XE2 4.6.6 XE2 UP3 only IDEFixPackXE2Reg466.zip 152.4 KB 6105 times 2012-01-04
IDE Fix Pack 2007 4.4 Windows 10 Edition 2007 Dec.Update IDEFixPack2007Reg44Win10.7z 88.51 KB 19813 times 2015-08-04

IDE Fix Pack 5.93 – Windows 10 support

By | August 3, 2015

Those who tried to use IDE Fix Pack on Windows 10 got the uncritical error message “failed: Faster IDE startup [IDE.Startup.Fast]” that appeared on every IDE start. The problem is that a byte sequence changed that IDE Fix Pack tries to find. Windows 10 uses “INT3” instead of “NOP” instructions to align functions and IDE Fix Pack 5.92 and earlier looked for “NOP”. The new 5.93 now allows both instructions.

IDE Fix Pack 5.93 only adds support for Windows 10 otherwise it is the same as 5.92.

For the next IDE Fix Pack I’ll work on the Delphi Win64 compiler’s performance. (not the generated code)

Download:

Name IDE Version File Size Downloads Added
IDE Fix Pack 6.4.2 2009 (UP4) IDEFixPack2009Reg64.2.7z 242.75 KB 5744 times 2019-03-23
IDE Fix Pack 6.4.2 2010 (UP5) IDEFixPack2010Reg64.2.7z 237.09 KB 6548 times 2019-03-23
IDE Fix Pack 6.4.2 XE (UP1) IDEFixPackXEReg64.2.7z 221.38 KB 4074 times 2019-03-23
IDE Fix Pack 6.4.2 XE2 (UP4+HF1) IDEFixPackXE2Reg64.2.7z 316.78 KB 4489 times 2019-03-23
IDE Fix Pack 6.4.2 XE3 (UP2) IDEFixPackXE3Reg64.2.7z 257.4 KB 3617 times 2019-03-23
IDE Fix Pack 6.4.2 XE4 (UP1) IDEFixPackXE4Reg64.2.7z 260.1 KB 3229 times 2019-03-23
IDE Fix Pack 6.4.2 XE5 (UP2) IDEFixPackXE5Reg64.2.7z 257.7 KB 3722 times 2019-03-23
IDE Fix Pack 6.4.2 XE6 (UP1) IDEFixPackXE6Reg64.2.7z 423 KB 3416 times 2019-03-23
IDE Fix Pack 6.4.2 XE7 (UP1) IDEFixPackXE7Reg64.2.7z 429.48 KB 4584 times 2019-03-23
IDE Fix Pack 6.4.2 XE8 (UP1) IDEFixPackXE8Reg64.2.7z 431.7 KB 3866 times 2019-03-23
IDE Fix Pack 6.4.2 10 Seattle (RTM/UP1) IDEFixPackD10Reg64.2.7z 428.33 KB 5355 times 2019-03-23
IDE Fix Pack 6.4.2 10.1 Berlin IDEFixPackD101Reg64.2.7z 430.65 KB 5936 times 2019-03-23
IDE Fix Pack 6.4.2 10.2 (RTM/UP1/2/3) IDEFixPackD102Reg64.2.7z 426.27 KB 9399 times 2019-03-23
IDE Fix Pack 6.4.4 10.3 (RTM/UP1/2/3) IDEFixPackD103Reg64.4.7z 444.98 KB 17800 times 2019-08-01

Download (fastdcc):

Name IDE Version File Size Downloads Added
fastdcc 6.4.2 2009 (UP4) fastdcc2009v64.2.7z 112.87 KB 3106 times 2019-03-23
fastdcc 6.4.2 2010 (UP5) fastdcc2010v64.2.7z 120.38 KB 3220 times 2019-03-23
fastdcc 6.4.2 XE (UP1) fastdccXEv64.2.7z 121.36 KB 2975 times 2019-03-23
fastdcc 6.4.2 XE2 (UP4+HF1) fastdccXE2v64.2.7z 166.48 KB 3011 times 2019-03-23
fastdcc 6.4.2 XE3 (UP2) fastdccXE3v64.2.7z 150.88 KB 2845 times 2019-03-23
fastdcc 6.4.2 XE4 (UP1) fastdccXE4v64.2.7z 153.55 KB 2803 times 2019-03-23
fastdcc 6.4.2 XE5 (UP2) fastdccXE5v64.2.7z 151.87 KB 2905 times 2019-03-23
fastdcc 6.4.2 XE6 (UP1) fastdccXE6v64.2.7z 198.67 KB 2906 times 2019-03-23
fastdcc 6.4.2 XE7 (UP1) fastdccXE7v64.2.7z 219.84 KB 3175 times 2019-03-23
fastdcc 6.4.2 XE8 (UP1) fastdccXE8v64.2.7z 224.67 KB 2930 times 2019-03-23
fastdcc 6.4.2 10 Seattle (RTM/UP1) fastdccD10v64.2.7z 219.65 KB 3267 times 2019-03-23
fastdcc 6.4.2 10.1 Berlin fastdccD101v64.2.7z 223.52 KB 3339 times 2019-03-23
fastdcc 6.4.2 10.2 (RTM/UP1/2/3) fastdccD102v64.2.7z 219.06 KB 4156 times 2019-03-23
fastdcc 6.4.4 10.3 (RTM/UP1/2/3) fastdccD103v64.4.7z 228.61 KB 5725 times 2019-07-31

Changelog:

  • Added: Support for Windows 10

IDE Fix Pack dev-snapshot supports Windows 10 Insider Preview

By | July 9, 2015

On of the IDE Fix Pack patches (IDE.Startup.Fast) fails if it is used in the Windows 10 Insider Preview. The newest development snapshot now supports the Preview. The incompatibility was caused by Windows 10 Insider Preview using “int3” ($CC) instead of “nop” ($90) for code alignment. It looks like Mircosoft uses a kind of debug build. The patch now supports both opcodes so it should be fine if Microsoft should revert to “nop”.

DLangExtensions legacy code base on GitHub

By | June 29, 2015

Due to many requests to get the source code of the DLangExtensions Delphi preprocessor, I decided to upload the code base, as it was in 2009 when the project was discontinued, to GitHub.

The project is still discontinued and not resumed. This means no support from me. Only the main project was migrated to Delphi 2009, the command line tools are still written in Delphi 2007 and may not compile at all.

A copy of the required CompileInterceptorW.dll that supports Delphi 2009-XE8, is in the repository. Newer DLLs can be extracted from DDevExtensions.

IDE Fix Pack 5.92 released

By | May 16, 2015

The new version 5.92 fixes a bug in the TStringList optimization that caused UniDAC’s designtime editor to crash. It also binds the Ctrl+Alt+Enter shortcut to the “Find References” action. The IDE’s original behavior is to toggle the shortcut between “Find References” and “Find Local References” in the action’s OnUpdate handler, depending on the ErrorInsight parser’s result. This mechanism was broken by IDE Fix Pack when it removed all ErrorInsight parser calls from the menu’s OnUpdate handlers to prevent its execution in the main thread, blocking the UI.
The new version 5.92 now binds Ctrl+Alt+Enter to “Find References” and introduces Shift+Ctrl+Alt+Enter for “Find Local References”. No shortcut toggling anymore.

Download:

Name IDE Version File Size Downloads Added
IDE Fix Pack 6.4.2 2009 (UP4) IDEFixPack2009Reg64.2.7z 242.75 KB 5744 times 2019-03-23
IDE Fix Pack 6.4.2 2010 (UP5) IDEFixPack2010Reg64.2.7z 237.09 KB 6548 times 2019-03-23
IDE Fix Pack 6.4.2 XE (UP1) IDEFixPackXEReg64.2.7z 221.38 KB 4074 times 2019-03-23
IDE Fix Pack 6.4.2 XE2 (UP4+HF1) IDEFixPackXE2Reg64.2.7z 316.78 KB 4489 times 2019-03-23
IDE Fix Pack 6.4.2 XE3 (UP2) IDEFixPackXE3Reg64.2.7z 257.4 KB 3617 times 2019-03-23
IDE Fix Pack 6.4.2 XE4 (UP1) IDEFixPackXE4Reg64.2.7z 260.1 KB 3229 times 2019-03-23
IDE Fix Pack 6.4.2 XE5 (UP2) IDEFixPackXE5Reg64.2.7z 257.7 KB 3722 times 2019-03-23
IDE Fix Pack 6.4.2 XE6 (UP1) IDEFixPackXE6Reg64.2.7z 423 KB 3416 times 2019-03-23
IDE Fix Pack 6.4.2 XE7 (UP1) IDEFixPackXE7Reg64.2.7z 429.48 KB 4584 times 2019-03-23
IDE Fix Pack 6.4.2 XE8 (UP1) IDEFixPackXE8Reg64.2.7z 431.7 KB 3866 times 2019-03-23
IDE Fix Pack 6.4.2 10 Seattle (RTM/UP1) IDEFixPackD10Reg64.2.7z 428.33 KB 5355 times 2019-03-23
IDE Fix Pack 6.4.2 10.1 Berlin IDEFixPackD101Reg64.2.7z 430.65 KB 5936 times 2019-03-23
IDE Fix Pack 6.4.2 10.2 (RTM/UP1/2/3) IDEFixPackD102Reg64.2.7z 426.27 KB 9399 times 2019-03-23
IDE Fix Pack 6.4.4 10.3 (RTM/UP1/2/3) IDEFixPackD103Reg64.4.7z 444.98 KB 17800 times 2019-08-01

Download (fastdcc):

Name IDE Version File Size Downloads Added
fastdcc 6.4.2 2009 (UP4) fastdcc2009v64.2.7z 112.87 KB 3106 times 2019-03-23
fastdcc 6.4.2 2010 (UP5) fastdcc2010v64.2.7z 120.38 KB 3220 times 2019-03-23
fastdcc 6.4.2 XE (UP1) fastdccXEv64.2.7z 121.36 KB 2975 times 2019-03-23
fastdcc 6.4.2 XE2 (UP4+HF1) fastdccXE2v64.2.7z 166.48 KB 3011 times 2019-03-23
fastdcc 6.4.2 XE3 (UP2) fastdccXE3v64.2.7z 150.88 KB 2845 times 2019-03-23
fastdcc 6.4.2 XE4 (UP1) fastdccXE4v64.2.7z 153.55 KB 2803 times 2019-03-23
fastdcc 6.4.2 XE5 (UP2) fastdccXE5v64.2.7z 151.87 KB 2905 times 2019-03-23
fastdcc 6.4.2 XE6 (UP1) fastdccXE6v64.2.7z 198.67 KB 2906 times 2019-03-23
fastdcc 6.4.2 XE7 (UP1) fastdccXE7v64.2.7z 219.84 KB 3175 times 2019-03-23
fastdcc 6.4.2 XE8 (UP1) fastdccXE8v64.2.7z 224.67 KB 2930 times 2019-03-23
fastdcc 6.4.2 10 Seattle (RTM/UP1) fastdccD10v64.2.7z 219.65 KB 3267 times 2019-03-23
fastdcc 6.4.2 10.1 Berlin fastdccD101v64.2.7z 223.52 KB 3339 times 2019-03-23
fastdcc 6.4.2 10.2 (RTM/UP1/2/3) fastdccD102v64.2.7z 219.06 KB 4156 times 2019-03-23
fastdcc 6.4.4 10.3 (RTM/UP1/2/3) fastdccD103v64.4.7z 228.61 KB 5725 times 2019-07-31

Changelog:

  • Fixed: TStringList.IndexOfName optimization broke UniDAC’s designtime editor
  • Fixed: “Find References” shortcut was assigned to “Find Local References” unless the search menu was opened
  • Added: “Find Local References” shortcut Shift+Ctrl+Alt+Enter

IDE Fix Pack 5.91 – Bugfix release

By | April 23, 2015

There was a bug in the TStringList.IndexOf performance optimization that didn’t take into account that DB.TFlatList overrides GetCount and implements lacy loading. The optimization directly accessed TStringList.FCount which was zero because GetCount wasn’t called. This bug appeared when you tried to open a DataSet in the IDE.

Another problem was that the fastdcc*.exe files in the XE7 and XE8 fastdcc 7zip file were from a pre-XE3 version and used “fastdccXx.dll” instead of “fastdccXx.dllx” (that is necessary since XE3’s copy protection changes). This prevented the CompilerSpeedPack to be injected into the compiler’s process.

Changelog:

  • Fixed: IDEFixPack didn’t take into account that DB.TFlatList uses late loading through GetCount
  • Fixed: fastdcc32/64/aarm in XE7 and XE8 didn’t load the CompilerSpeedPack into the compiler’s process

IDE Fix Pack download:

Name IDE Version File Size Downloads Added
IDE Fix Pack 6.4.2 2009 (UP4) IDEFixPack2009Reg64.2.7z 242.75 KB 5744 times 2019-03-23
IDE Fix Pack 6.4.2 2010 (UP5) IDEFixPack2010Reg64.2.7z 237.09 KB 6548 times 2019-03-23
IDE Fix Pack 6.4.2 XE (UP1) IDEFixPackXEReg64.2.7z 221.38 KB 4074 times 2019-03-23
IDE Fix Pack 6.4.2 XE2 (UP4+HF1) IDEFixPackXE2Reg64.2.7z 316.78 KB 4489 times 2019-03-23
IDE Fix Pack 6.4.2 XE3 (UP2) IDEFixPackXE3Reg64.2.7z 257.4 KB 3617 times 2019-03-23
IDE Fix Pack 6.4.2 XE4 (UP1) IDEFixPackXE4Reg64.2.7z 260.1 KB 3229 times 2019-03-23
IDE Fix Pack 6.4.2 XE5 (UP2) IDEFixPackXE5Reg64.2.7z 257.7 KB 3722 times 2019-03-23
IDE Fix Pack 6.4.2 XE6 (UP1) IDEFixPackXE6Reg64.2.7z 423 KB 3416 times 2019-03-23
IDE Fix Pack 6.4.2 XE7 (UP1) IDEFixPackXE7Reg64.2.7z 429.48 KB 4584 times 2019-03-23
IDE Fix Pack 6.4.2 XE8 (UP1) IDEFixPackXE8Reg64.2.7z 431.7 KB 3866 times 2019-03-23
IDE Fix Pack 6.4.2 10 Seattle (RTM/UP1) IDEFixPackD10Reg64.2.7z 428.33 KB 5355 times 2019-03-23
IDE Fix Pack 6.4.2 10.1 Berlin IDEFixPackD101Reg64.2.7z 430.65 KB 5936 times 2019-03-23
IDE Fix Pack 6.4.2 10.2 (RTM/UP1/2/3) IDEFixPackD102Reg64.2.7z 426.27 KB 9399 times 2019-03-23
IDE Fix Pack 6.4.4 10.3 (RTM/UP1/2/3) IDEFixPackD103Reg64.4.7z 444.98 KB 17800 times 2019-08-01

fastdcc download:

Name IDE Version File Size Downloads Added
fastdcc 6.4.2 2009 (UP4) fastdcc2009v64.2.7z 112.87 KB 3106 times 2019-03-23
fastdcc 6.4.2 2010 (UP5) fastdcc2010v64.2.7z 120.38 KB 3220 times 2019-03-23
fastdcc 6.4.2 XE (UP1) fastdccXEv64.2.7z 121.36 KB 2975 times 2019-03-23
fastdcc 6.4.2 XE2 (UP4+HF1) fastdccXE2v64.2.7z 166.48 KB 3011 times 2019-03-23
fastdcc 6.4.2 XE3 (UP2) fastdccXE3v64.2.7z 150.88 KB 2845 times 2019-03-23
fastdcc 6.4.2 XE4 (UP1) fastdccXE4v64.2.7z 153.55 KB 2803 times 2019-03-23
fastdcc 6.4.2 XE5 (UP2) fastdccXE5v64.2.7z 151.87 KB 2905 times 2019-03-23
fastdcc 6.4.2 XE6 (UP1) fastdccXE6v64.2.7z 198.67 KB 2906 times 2019-03-23
fastdcc 6.4.2 XE7 (UP1) fastdccXE7v64.2.7z 219.84 KB 3175 times 2019-03-23
fastdcc 6.4.2 XE8 (UP1) fastdccXE8v64.2.7z 224.67 KB 2930 times 2019-03-23
fastdcc 6.4.2 10 Seattle (RTM/UP1) fastdccD10v64.2.7z 219.65 KB 3267 times 2019-03-23
fastdcc 6.4.2 10.1 Berlin fastdccD101v64.2.7z 223.52 KB 3339 times 2019-03-23
fastdcc 6.4.2 10.2 (RTM/UP1/2/3) fastdccD102v64.2.7z 219.06 KB 4156 times 2019-03-23
fastdcc 6.4.4 10.3 (RTM/UP1/2/3) fastdccD103v64.4.7z 228.61 KB 5725 times 2019-07-31