Nová verze Delphi (resp. RAD Studio) je dostupná. Co je nového? Detailní přehled na wiki Embt, já se zastavím jen nad několik poznatky. Po velmi vydařené Seattle je Berlin spíše evoluce a potěší hlavně mobilní vývojáře.
Nová verze primárně mění instalaci. Po stažení malého balíku máte okamžitě minimální IDE
Základní instalace je hotová kolem 1 minuty, výsledkem je IDE podle všeho jen s ořezanou verzi Win32, následně se zobrazí Platform Selection, kde si vyberete co chcete za platformy a v dalším kroku zda chcete help, dema atd. Kdykoliv v budoucnosti se dá tento wizard znovu spustit a doinstalovat další. Předpokládám, že pomocí toho budou distribuovány další budoucí platformy. Jádrem je Get It známý z předchozí verze.
Jestli budete z nové verze nadšeni, závisí na tom, zda používáte VCL nebo mobilní vývoj. Na rovinu říkám, že v prvním případě číslo verze přesně odpovídá počtu novinek (vyjma pro mne výrazného ALE, ke kterému se dostanu), v druhém případě je to výrazně lepší.
Takže v případě mobilního vývoje oceníte Android 6.0, možná i FireUI Live Preview (na připojeném zařízení dokáže IDE okamžitě zobrazovat změny v designeru), lepší podpora pro Accelerators ve FMX, případně TAddressBook komponentu, která na mobilech zpřístupňuje adresář mobilu.
Vylepšena byla podpora FireDAC ve všech možných DB, zlepšena podpora Azure, vylepšena podpora Bluetooth pro různá zařízení.
Ohledně IDE: přidán Floating Form Designer i pro FMX, výrazné vylepšení debuggeru pro Android i iOS (včetně CPU View).
No a dostáváme se ke změnám k RTL a kompilátoru a pomalu se propracováván k tomu, proč jsem naštvaný (to je to ALE).
Podpora regulárních výrazů byla optimalizována, byla přidána třída TBufferedFileStream. HTTP Client nyní podporuje gzip odpověď. Zrychlena kompilace jednotek s generiky.
Kompilátor nyní podporuje pro všechny platformy atributy
Detaily Weak_References.
Všechny platformy mají opět typy UTF8String a RawByteString (včetně iOS, Androidu). K tomu snad jen to, že XE3 - XE10 nemající tyto typy byl mega fail. Společně s řetězci od nuly to pokládám za 2 ze 3 kardinálních omylů EMBT (o třetím se dozvíte tak do minuty - podle mne). I když, u těch řetězců to vzdáleně chápu (kompatibilita rozhraní s .NET), i vlastně ten pokus o zrušení AnsiStringu nějak chápu (zjednodušení RTL atd). Každopádně se tím dále nemusíme zabývat, pro starší verze použijte unit Byte-Strings for Delphi mobile compilers. Opravdu mne ale štve, že od prvního okamžiku odstranění těchto typů se proti tomu zvedla vlna odporu, a někteří (včetně mne) navrhovali aspoň zachovat RawByteString, což bylo ignorováno.
No a nakonec malá citace z oficiálního What's new: To enforce visibility semantics, class and record helpers cannot access private members of the classes or records that they extend.
Podle mne změnit chování něčeho, co je používáno cca 10 let (od D2007), je to všeobecně známo, bylo doporučováno jako bezpečná cesta jak opravovat chyby v cizím kódu a navíc je to bezpečné a type safe - jak bych to řekl korektně po napočítání do sta: diskutabilní. Tato vlastnost je obecně využívána jak programátory, tak vývojáři 3rd komponent jako jednoduchá a bezpečná varianta jak odstranit sračky v cizím kódu, i vzhledem k tomu, že spousta autorů komponent (případně přímo VCL, RTL, FMX) svou stupiditou používá přístupu k private položkách v rámci jednotky. No, takže pokud Váš program nepůjde přeložit ve verzi 10.1, je to z velkou pravděpodobností z tohoto důvodu, protože někdo rádoby chytrý si myslí, že vyšší principy čistoty jsou nade vše.
Dobrá práce.
P.S.: Pořád si myslím, že autor komponent by měl klíčové slovo private zapomenout.
P.S.2: Na četné dotazy: nabízím školení a workshopy Delphi na různá témata, primárně ve Vaší firmě. Pro dotazy prosím radekc@delphi.cz