An Open Source Client-Server ORM/SOA/MVC framework in modern Object Pascal

(c) 2008-2024 Synopse Informatique - Arnaud Bouchez
https://synopse.info - http://mORMot.net
Thanks to all Contributors!
NOTICE: This version 2 replaces mORMot 1.18 which is now in maintainance-only mode. Consider using mORMot 2 for any new or maintainable project.
You can find more about mORMot 2 in:
src sub-folder;To discuss about mORMot, in addition to our official forum, you can join:
Those discussion groups are not managed by Synopse, but by some mORMot 2 users: thanks a lot to them!
If you find it worth using, please consider sponsoring mORMot 2 dev if you can - and even better through sharing your own commits. :-)
Synopse mORMot 2 is an Open Source Client-Server ORM SOA MVC framework for Delphi 7 up to Delphi 12 Athenes and FPC 3.2/trunk, targeting Windows/Linux/BSD/MacOS for servers, and any platform for clients (including mobile or AJAX).

The main features of mORMot are therefore:
interface;Emphasizing speed and versatility, mORMot leverages the advantages of modern object pascal native code and easy-to-deploy solutions, reducing deployment cost and increasing ROI. It can be used:
The mORMOt 2 repository content is organized into the following sub-folders:
src is the main source code folder, where you should find the actual framework;packages contains IDE packages and tools to setup your dev environment;static contains raw library .o/.obj files needed for FPC and Delphi static linking;test defines the regression tests of all framework features;res to compile some resources used within src - e.g. the static third-party binaries;doc holds the documentation of the framework;ex contains various samples.Feel free to explore the source, and the inlined documentation.
The framework is licensed under a disjunctive three-license giving you the choice of one of the three following sets of free software/open source licensing terms:
This allows the use of our code in as wide a variety of software projects as possible, while still maintaining copy-left on code we wrote. See the full licensing terms.
The framework source code:
Note that FPC 3.2.2 has a regression with variant late binding - use FPC 3.2.2 fixes branch instead.
On Delphi, only the Windows target is available for mORMot general units, but you can use the cross-platform clients units on all Delphi targets. FPC is a much better and consistent cross-platform compiler, we gladly support.
Please submit pull requests for non-validated versions.
git clone https://github.com/synopse/mORMot2.git into e.g. c:githubmORMot2,c:githubmORMot2static.d:mormot2,mormot2static.tgz or mormot2static.7z file content into d:mormot2static./packages/lazarus/mormot2.lpk package;mormot2ui.lpk if needed.mormot2 with full path to your mORMot 2 src sub-folder (Tools - Options - IDE - Environment Variables), e.g. c:githubmORMot2src or d:mormot2src depending on step 1;$(mormot2);$(mormot2)core;$(mormot2)lib;$(mormot2)crypt;$(mormot2)net;$(mormot2)db;$(mormot2)rest;$(mormot2)orm;$(mormot2)soa;$(mormot2)app;$(mormot2)script;$(mormot2)ui;$(mormot2)tools;$(mormot2)misctest/mormot2tests.dpr in the IDE, and run the regression tests on your machine.For safety, the SHA-256 checksums of the current version of the downloaded binary files, as published in our https://synopse.info/files server, are available in this repository static/dev.sha256 file.
The mORMot framework stayed in revision 1.18 for years, and is was time for a full refactoring.
The main refactoring points tried to better follow SOLID principles:
SynCommons.pas, mORMot.pas) into smaller scope-refined units;TSQLRecord into TOrm, TSQLRest into TRest...;TRest class split into proper REST/ORM/SOA classes - and folders;asm kernel, using AVX2 if available;We therefore created a whole new project and repository, since switching to version 2 induced some backward uncompatible changes. New unit names were used, to avoid unexpected collision issues during migration, or if 1.18 is to remain installed for a compatibility project.
Quick Steps when upgrading from a previous 1.18 revision:
Note all units where split and renamed, and some breaking changes introduced for enhanced features, therefore a direct update is not possible - nor wanted
Switch to a new folder, e.g. #lib2 instead of #lib
Download latest 2.# revision files as stated just above
Change your references to mORMot units:
PUREMORMOT2 mode;