Embarcadero dnes (22.3.2017) vydalo další verzi Delphi a C++Builder s podtitulem Tokyo. Hlavní nosnou myšlenkou je přidání kompilace pro Linux 64 bit, bohužel jen pro Enterprise+ edice (nebudu se k tomu dále vyjadřovat).
Co je nového: What's_New, dále Feature matrix, seznam opravených chyb (některé velmi prehistorické).
Download: webinstaller, ISO, FastReport VCL.
Delphi Linux kompilátor je na bázi LLVM (podle testů slušně optimalizující), ARC, jen 64bit, první znak pro string má index 1 (jako ve Windows). Funguje to jako všechny ostatní ne-windows kompilátory, tj. cross kompilací z Windows za podpory PA serveru (už od dob XE2 a Max OS X). Podpora je pouze pro nevizuální aplikace (aka server side). Velmi se mi líbí přesměrování výstupu programu přímo do okna IDE. Kompilace je pomalejší než pro windows, ale není to zase taková hrůza. Zpomalení je způsobeno linkerem, který na rozdíl od Delphi Win32 linkeru nemá globálnější přehled a musí linkovat jako se linkují ostatní jazyky.
Podporována je celá RTL, WebBroker (i jako modul pro Apache), FireDac (včetně připojení na MS SQL server, IB, Firebird nebo Oracle, ale není podporován Informix), paralelní knihovny nebo vláken, podpora pro Http klienta jako na ostatních platformách
Připomínám, že 8-bit stringy (AnsiString) nejsou podporovány, kromě Utf8string a RawByteString.
Ohledně databází: FDMemTable má design podporu pro editaci dat, obecně nový typ Field pro Guid. Co se mi líbí, je další rozšíření System.Hash .
Zásadní věci jsou podle mne dvě:
Jinak klasicky evoluce, žádná revoluce
Významné jsou opravy ohledně High DPI podpory - což ale ověřit nemohu.
Oficiální podpora pro:
Osobně jsem po chvilce rozchodil CentOS 7 i při minimální instalaci. Stačilo
[DCC Error] E2597 C:\Program Files (x86)\Embarcadero\Studio\19.0\bin\ld-linux.exe: error: cannot find -lgcc_s
yum install glibc-static
yum install glibc-devel
yum install zlib-devel
případně
yum install compat-libstdc++-33
yum install compat-gcc-44-c++
Během testování jsem jako pokusného králíka udělal port Synapse pod Delphi Linux (evoluce z podpory MacOSX, iOS, Android).
Poznámka: TList je pro ARC deprecated, což např. pro portování Synapse byla jedna ze dvou zásadních úprav (už dříve). Druhá (taktéž už dříve) byla nahrazení AnsiString bufferu za TBytes. Dnes by to asi vyřešil alias AnsiString = RawByteString.
Obecný TList je nutno nahradit za TList<T>, tj. generický list, aby ARC dokázalo udržet přehled o referencích. Snad se k tomu vrátím.