Jump to content
Arnaud Bouchez

mORMot 2.1 Released

Recommended Posts

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!
🙂

 

  • Like 7
  • Thanks 3

Share this post


Link to post

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.

 

  • Like 4

Share this post


Link to post
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 by Rollo62

Share this post


Link to post

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.

  • Like 2

Share this post


Link to post

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

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 by Arnaud Bouchez
  • Like 3

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×