New x64 compiler… and no new optimizations…
Feeling bummed by x64 compiler for “Enterprise” customers, Professional users blurt out of a 64-bit 64-bit compiler that… has no new optimizations for x86 or x64. So what’s the point?
The point of Delphi’s x64, is to compile compile huge code-bases, where multiple gigabytes of source files are pulled, sometimes directly from the vendor’s repository, like when you license LMD and have access to their GIT repository, or pull directly from DevExpress’s internal VCL GIT, or other vendor’s GIT repos, or you build custom GIT repos for TMS-ALL-ACCESS, TeeChart, Ehlib, FastReports, ComponentAce, Skia, MadExcept, DelphiHTMLComponents, UniDac, UniGui, Woll2Woll… and Delphi starts to complain about ‘Out of memory’, or debugging becomes difficult or next to impossible.
The larger requirements for 3rd-party libraries leads to bigger, larger EXEs and DLLs. Then there’s the odd C++ and Delphi split-brain issue. So a Delphi developer might have to… license C++ Builder Enterprise, Delphi Enterprise or RadStudio Enterprise, increasing costs.
A dark horse OmniPascal VSCode editor
Delphi’s IDE should have been an x64 bit Delphi EXE. Customers doing ETL, command-line (console) based apps are finding VSCode with extension OmniPascal, simple DFM editing (wow! imagine hand-crafting DFM files!), TMS-Web as a viable 64-bit replacement for Delphi’s IDE.
WebStencils
WebStencils was an open source project that Marco Cantu created a long time ago and they added it to the base product as a new feature. I assume that it's mostly something to make the sales/marketing guys happy, as they always need new features on every release. But it also adds base functionality to extend their RAD Server product as well.
Optimization
Several readers have stated optimization features.
https://blog.marcocantu.com/blog/2022-december-suggestions-help-delphi-compiler.html and https://stackoverflow.com/questions/920560/delphi-how-to-organize-source-code-to-increase-compiler-performance.
Here’s my take on paths.
Invalid path issue -
Why does Delphi add invalid paths to it’s library paths list, when Delphi flags invalid paths as invalid? Is somebody at Embarcadero intentionally adding buggy paths to Delphi, to intentionally slow down Delphi and C++ Builder?
Not removing old paths issue -
Delphi adds it’s own paths to Windows environment variables. This causes hair-tearing issues, as BPLs mismatch caused by Delphi’s uninstaller NOT removing environment paths, DCU version mismatch when you have several libraries installed for an older version of Delphi, and compiling on an older version of Delphi, when using latest.
Then, certain vendors release two versions of the same file. With unit-scope and repeated names. example. adding Unit scope VCLTee, VCLTee.Bind would match VCLTee.Bind.Chart and Chart.pas confusion. Ugh.
Then, there are certain vendors who release same filenames in 2 diffferent directories. Example. FMX\Name.Grid.pas, VCL\Name.Grid.Pas causing compile failure. Another Ugh.
Brief history of localization
Before Delphi 1.0, there were several older forms-designers add-ons based on the “RC” Resource file format.
In the olden days, of legendary Turbo C++ and TurboPascal, there were companion products to design UIs and generate C++ or Pascal code (much like the INTERFACE part of a VCL form). Some went as far as to be no-code - ObjectVision.
Older Borland OWL, PowerBuilder, PowerBasic, TurboPascal, the legacy Clarion all manipulate RC files, or at run-time, generate Windows primitives - Buttons, Radio-buttons, Edit-boxes, Memo-boxes, Menus (Bars, Popup-menus) and various custom-controls.
In the olden days, localization was simple. This was usually a number ID and a text file full of strings.
In the beginning, the number IDs were various unique #defines which linked to which control or custom-control inside a RC file it refereed to.
Legacy apps would ship with snippets of code using Norton Guide file format to localize texts. (ie. store texts in Norton Guide format)
This was fine, until, your app has hundreds of dialogs defined inside RC files, resource loaded from DLLs, resources loaded from custom parsers (such as DFM, ASL, QT XML dialogs).
In a Windows custom control, there are multiple strings, and each string needed a unique ID (text, tooltip or hint). Soon, dialogs soon turned very messy if duplicate numbers were assigned to same controls (eg two windows UI controls having same IDs), or complicated, if containers (groupboxes, panels) were used.
Delphi’s form designer used English texts, hashed into ATOM numbers. As Delphi does not free resources, this lead to strange out of memory errors despite having sufficient memory. There are various fixes for ATOM errors.
There is no number reservation system or fixing numbers to certain number-ranges for DFM and resourcestrings often change number IDs, leading to constantly having to re-do localization, if using a 3rd-party non-Delphi solution.
Delphi’s paradigm of component-based development, meant, localization became hideously complicated, requiring code-refactoring, linking to localization components, and - nightmare situation of having to re-do the localization if replacing one library with another.
Delphi ITE
Where did Delphi’s ITE turn sour?
Due to Delphi’s poor run-time performance, loading and re-loading texts slows down VCL apps. Delphi apps become fat, lazy and bloated.
Non-English users will notice how Right-to-Left is not a priority. The work-around is to use Skia. Then, you need to code lengthy work-arounds on Android, iOS and MacOS. Does ITE work on Android, FMX or iOS?
Delphi’s ITE does not recognize and does not properly handle the nested collection property. (a component has a property of type TCollection).
Delphi’s ITE does not include form resources used by a component at runtime.
There’s Better Translation Manager. There’s also GetText and another fork of GetText.
Which translation tool did you use? Another Delphi nightmare is brewing…





I have old apps. I am trying to migrate them... slowly by slowly...
Prior article - https://delphinightmares.substack.com/p/delphi-122-much-ado-about-nothing/