Arnaud Bouchez 407 Posted August 24, 2023 We are pleased to announce the release of mORMot 2.1. The download link is available on https://github.com/synopse/mORMot2/releases/tag/2.1.stable The reference blog article was just published at https://blog.synopse.info/?post/2023/08/24/mORMot-2.1-Released Here is an extract of the release notes: Added (C)LDAP, DNS, (S)NTP clients Command Line Parser Native digest/basic HTTP servers authentication Angelize services/daemons manager TTunnelLocal TCP port forwarding SHA-1/SHA-256 HW opcodes asm 7Zip dll wrapper OpenSSL CSR support PostgreSQL async DB with HTTP async backend (for TFB) LUTI continous integration cross-platform farm Changed Upgraded SQLite3 to 3.42.0 Stabilized Mac x86_64/aarch64 platforms Lots of bug fixes and enhancements Any feedback is welcome! 🙂 7 3 Share this post Link to post
Rollo62 539 Posted August 24, 2023 Great stuff, thanks for that, but what keeps me from looking much deeper into this is, the missing platform status for a full multi-platform support. Do you have a list or table, showing which parts can be used under FMX ( iOS, Android, Windows 32/64, Macos, Linux ) and which one only under VCL ( Windows 62/64 ) ? I understand that it isn't made for mobile in the first place, but your library is so overwhelming full of goodies and tools, it would be great to get a clear picture for each single piece. 4 Share this post Link to post
Fr0sT.Brutal 900 Posted August 25, 2023 mORMot is non-visual so it doesn't depend on FMX/VCL, AFAIK 1 Share this post Link to post
Rollo62 539 Posted August 25, 2023 (edited) 2 hours ago, Fr0sT.Brutal said: mORMot is non-visual so it doesn't depend on FMX/VCL, AFAIK Yes ,but I have a vague feeling that these classes are partly based on some Windows or other VCL or OS components. This is exactly why it would be good to clarify this once and for all. Because I assume that mORMot2 has improved multi-platform compatibility compared to mORMOT1, the question is just where exactly. Edited August 25, 2023 by Rollo62 Share this post Link to post
Arnaud Bouchez 407 Posted August 25, 2023 Good question. 😉 The multi-platform of mORMot 2 was deeply enhanced, but mostly about how it is implemented. Most system-specific code is now within mormot.core.os.pas. It now eases a lot the port to other systems. But currently, about Delphi platform supports, we only support Win32/Win64. Other platforms are supported on FPC only. Some new platforms are supported in mORMot 2 like Linux arm32 and aarch64, or Darwin/MacOS aarch64. We test them with our CI farm (using Mac M1 VM, or even a RPi). The reasons are: 1) we don't need it for our own projects 2) we don't own any Delphi licence with Mobile and Linux support 3) FPC cross-platform support is just much better than Delphi (exact same compiler and features everywhere) and don't break anything between versions 4) we certainly would need a lot of IFDEF to support those platforms - which we are very reluctant to do 5) for a FMX app, it is likely to need only some REST client support, which does not require the whole mORMot feature set - and you can generate client code for FMX To be more precise, with mORMot 2, we still need to fix the client code generation (which is not fully debugged), and introduce some cross-platform client units, which are likely to support TMS WebCore instead of SmartMobileStudio. 2 Share this post Link to post
Rollo62 539 Posted August 25, 2023 Thanks for the clarifications, what would you say from your gut feeling are the 5 biggest problem areas for Delphi Multi-Platform compatibility? Where you would expect big hurdles and where it is most likely to grind .... Share this post Link to post
Arnaud Bouchez 407 Posted August 25, 2023 (edited) Where to start? 1) Use TArray<integer> instead of array of integer (seems incredible - see below) 2) ARC -- happily removed since 10.4 Sidney 3) Language level incompatibilities: RawByteString, shortstring... 4) The LongInt and LongWord Data Type are different on 64-bit POSIX platforms (WTF) 5) too-much-moving target (it is almost impossible to target several Delphi compiler versions at once for mobile targets) 6) lack of ASM inlined blocks (and we have a lot of very good asm in mORMot) 7) LLVM backend issues (floating point performance, inlining inconsistency with Delphi compiler) ... in short: when you compare with FPC e.g. on Linux x64, most latest Delphi design decisions just make no sense About point 1) I am not sure but I got it from official Delphi documentation: https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Migrating_Delphi_Code_to_Mobile_from_Desktop This is just a b**s**t idea because at the compiler level "array of" and "TArray<>" are handled the same internally IIRC. It just breaks code with pre-generics compilers we prefer to support. So from now on, it was not possible to envisage Delphi "mobile" compiler compatibility without a lot of work. We do not want to pollute our source code with IFDEF everywhere, just to circumvent Delphi inconsistencies. Edited August 25, 2023 by Arnaud Bouchez 3 Share this post Link to post