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.
Obecně
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 .
FireMonkey
Zásadní věci jsou podle mne dvě:
- Multi-Threading podpora pro TBitmap, TCanvas a TContext3D
- Pro Android je nyní voláno vše z Java UI Thread, což je zásadní a pozitivní změna
Jinak klasicky evoluce, žádná revoluce
VCL
Významné jsou opravy ohledně High DPI podpory - což ale ověřit nemohu.
Linux
Oficiální podpora pro:
- Ubuntu Server (Ubuntu 16.04 LTS)
- RedHat Enterprise Linux (version 7)
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.