Some regression has been reported with Delphi 10.4.1 and SynPDF. From the Github issue description: Generating a PDF via VLCCanvas and TPdfDocumentGDI causes access violation when compiled with Delphi 10.4.1 with record field alignment compiler option set to "byte" or "off". When […]
For several reasons, only plain ASCII characters are accepted in Web URIs. Other characters should be escaped with % and the hexadecimal value of its code.
The tilde character
~ is not needed to be escaped... at least in theory... because in practice most code expects it...
A journey into confusing RFCs...
2020-07-02. Synopse Company
We just enrolled on GitHub Sponsors!
Aim is to allow proper evolution of our Open Source project, especially the upcoming mORMot2.
Thanks you all for have posted your feedback on our mORMot2 Survey!
Here are some insights.
On server side, a lot of CPU is done processing conversions to or from text. Mainly JSON these days.
In mORMot, we take care a lot about performance, so we have
rewritten most conversion functions to have something faster than the Delphi or
FPC RTL can offer.
Only float to text conversion was not available. And RTL str/floattexttext performance, at least under Delphi, is not consistent among platforms.
So we just added a new Double-To-Text set of functions.
First of all, if it was not clear enough: Delphi will continue to be supported in mORMot 2.0. Some people reported that our previous article may have been misleading. But perhaps not all versions. For sure, Delphi 5 and Kylix will not be supported in mORMot 2. It is also possible that it would not […]
The more I think of it, the more I am convinced it is time to change how the
framework is versioned.
We have version 1.18 since years... difficult to follow... time to upgrade!
I would like to upgrade mORMot to version 2 - with a major refactoring.
Our Open Source framework includes some optimized asm alternatives
We just rewrote from scratch the x86_64 version of those,
which was previously taken from third-party snippets.
The brand new code is meant to be more efficient and maintainable. In particular, we switched to SIMD 128-bit SSE2 or 256bit AVX memory access (if available), whereas current version was using 64-bit regular registers. The small blocks (i.e. < 32 bytes) process occurs very often, e.g. when processing strings, so has been tuned a lot. Non temporal instructions (i.e. bypassing the CPU cache) are used for biggest chunks of data. We tested ERMS support, but it was found of no benefit in respect to our optimized SIMD, and was actually slower than our non-temporal variants. So ERMS code is currently disabled in the source, and may be enabled on demand by a conditional.
move() was not bad. Delphi's Win64 was far
from optimized - even ERMS was poorly introduced in latest RTL, since it should
be triggered only for blocks > 2KB. Sadly, Delphi doesn't support AVX
assembly yet, so those opcodes would be available only on FPC.
Resulting numbers are talking by themselves. Working on Win64 and Linux, of course.
2019-12-25. Synopse Company
Let the little mORMot wish you and all yours a merry Christmas and a happy New Year! Happy coding!
I just finished my workshop at EKON 23.
Like every year, it was a great event to attempt to, and I enjoyed presenting 2 sessions and 1 workshop.
Sessions were about "Kingdom Driven Design" (KDD), which is the
name I used to define a cut-down version of "Domain Driven Design" (DDD).
Less paranoid, a bit less isolation, but perhaps more common sense for the less sensitive projects.
Some presentations and code are now available!
I just found some very nice articles by Stephan Bester about first steps to mORMot's ORM and SOA.
Don't be scared by the mORMot: it is more stressed than you
This painful picture just won a wildlife photographer prize... poor little rodent!
A long-awaited feature was the ability to create stand-alone mORMot Win64 applications via Delphi, with no external sqlite3-64.dll required.
It is now available, with proper integration, and encryption is working!
There are still some days to join EKON 23 conferences with the reduced price!
I will make 2 sessions, and 1 workshop, in English (my German is not good
enough), about practical project design and mORMot.
If you find DDD is a bit too much for you, but still want to write clean code, check this!
Sometimes, I am asked what could be done with mORMot. Well, we've been using the library at LiveMon to analyse logs for example. And we're able to get speed of a few TB/sec. Speed above is no typo: TB/s not GB/s. For a regex search, not a per-word dictionary based lookup. With a cross-platform […]
2018-11-12. Pascal Programming
I've uploaded two sets of slides from my presentations at EKON 22 : Object Pascal Clean Code Guidelines Proposal High Performance Object Pascal Code on Servers with the associated source code The WorkShop about "Getting REST with mORMot" has a corresponding new Samples folder in our […]
We just committed a deep refactoring of the SynSQlite3Static.pas unit - and all units using static linking for FPC. It also includes a new encryption format for SQlite3, using AES, so much more secure than the previous one. This is a breaking change, so worth a blog article! Now all static .o .a […]
In the last weeks/months, we worked a lot with FPC.
Delphi is still our main IDE, due to its better debugging experience under Windows, but we target to have premium support of FPC, on all platforms, especially Linux.
The new Delphi Linux compiler is out of scope, since it is heavily priced,
its performance is not so good, and ARC broke memory management so would need a
deep review/rewrite of our source code, which we can't afford - since we have
FPC which is, from our
opinion, a much better compiler for Linux.
Of course, you can create clients for Delphi Linux and FMX, as usual, using the cross-platform client parts of mORMot. But for server side, this compiler is not supported, and will probably never be.
2018-01-02. Synopse Company
Happy New mORMot Year 2018! And thanks Mario for the video! […]
2017-11-11. Synopse Company
You like working with mORMot ? We're hiring new developers at LiveMon. We're a full-remote team (with a monthly gather-up in Paris), working on a real-time AI-powered monitoring tool. I joined LiveMon this week, and we will work together on this exciting project, using mORMot and FPC! Contact us at […]
After having enjoyed EKON 21 conferences in Köln, some quick post to share material about my presentations. MicroServices: SOLID Meets SOA MicroServices: Event-Driven Design Practical Domain-Driven Design I also included the "Practical DDD" source code in a new sample folder of the mORMot […]
« previous entries - page 1 of 14