Just to share a commit of some interest to FPC/Lazarus users. Ondrej Pokorny (aka "reddwarf" in our forums) did send to us a nice implementation of our SynTaskDialog.pas unit, compatible with Lazarus. Since it is incompatible with the current state of the other mORMot UI units (which are […]
Open Source › Open Source libraries
2015-02-21
SynCrypto: SSE4 x64 optimized asm for SHA-256
2015-02-21. Open Source › Open Source libraries
We have just included some optimized x64 assembler to our Open
Source SynCrypto.pas unit
so that SHA-256 hashing will perform at best speed.
It is an adaptation from
tuned Intel's assembly macros, which makes use of the SSE4 instruction set,
if available.
2014-11-23
Breaking change: New SynLog and SynTests unit extracted from SynCommons.pas
2014-11-23. Open Source › Open Source libraries
In order to enhance code modularity, we extracted logging and testing features from SynCommons.pas. Discover the new SynLog.pas and SynTests.pas units! Documentation has been updated to reflect the changes. This is a breaking change... Ensure you add SynLog and/or SynTests to your uses clauses, just […]
2014-11-18
HTTP remote access for SynDB SQL execution
2014-11-18. Open Source › Open Source libraries
For mORMot, we developed a fully feature direct access layer to any RDBMS, implemented in the SynDB.pas unit.
You can use those SynDB
classes to execute any SQL statement,
without any link to the framework ORM.
At reading, the resulting performance is much higher than using the standard
TDataSet
component, which is in fact a true performance
bottleneck.
It has genuine features, like
column access via late-binding,
an innovative ISQLDBRows
interface, and ability to directly access
the low-level binary buffers of the database clients.
We just added a nice feature to those classes: the ability to access
remotely, via plain HTTP, to any SynDB
supported database!
2014-09-12
Faster WideString process for good old non Unicode Delphi 6-2007
2014-09-12. Open Source › Open Source libraries
For pre-Unicode versions of Delphi, the unique way of having UTF-16 native
type is to use the WideString
type.
This type, under Windows, matched the BSTR managed
type, as used by OLE and COM components.
In Delphi, WideString
implementation calls directly the
corresponding Windows API, and do not use the main Delphi heap manager.
Even if since Vista, this API did have a huge speed-up, it is still in practice
much slower than the regular string
type. Problems is not about
UTF-16 encoding, but about the memory allocation, which is shared among
processes, using the Windows global heap, and is much slower than our beloved
FastMM4.
Newer versions of Delphi (since Delphi 2009) feature a refactored
string
= UnicodeString
type, which relies on
FastMM4 and not the Windows API, and is much faster than
WideString
.
Within our mORMot framework,
we by-passed this limitation by using our RawUTF8
type, which is
UTF-8 encoded, so as Unicode ready as the new UnicodeString
type,
and pretty fast.
In a recent internal project, we had to use a lot of
WideString
instances, to support UTF-16 encoding in Delphi
7/2007, involving a lot of text.
It sounded to be very slow, so we had to do something!
This is where our new SynFastWideString unit comes in.
Purpose of this unit is to patch the system.pas
unit for older
versions of Delphi, so that WideString
memory allocation would use
FastMM4 instead of the slow BSTR Windows API.
It will speed up the WideString
process a lot, especially when a
lot of content is allocated, since FastMM4 is much more aggressive
than Windows' global heap and the BSTR slow API. It could be more than 50 times
faster, especially when releasing the used memory.
The WideString
implementation pattern does NOT feature Copy-On-Write, so is still
slower than the string UnicodeString
type as implemented since
Delphi 2009. This is the reason why this unit won't do anything on
Unicode versions of the compiler, since the new string type is to be
preferred there.
2014-04-28
Mustache Logic-less templates for Delphi - part 3
2014-04-28. Open Source › Open Source libraries
Mustache is
a well-known logic-less template engine.
There is plenty of Open Source implementations around (including in JavaScript,
which can be very convenient for AJAX applications on client side, for
instance).
For mORMot, we created the first pure Delphi implementation of it,
with a perfect integration with other bricks of the framework.
In last part of this series of blog articles, we will introduce the
Mustache library included within mORMot source code
tree.
You can download this documentation
as one single pdf file.
Mustache Logic-less templates for Delphi - part 2
2014-04-28. Open Source › Open Source libraries
Mustache is a well-known
logic-less template engine.
There is plenty of Open Source implementations around (including in JavaScript,
which can be very convenient for AJAX applications on client side, for
instance).
For mORMot, we created the first pure Delphi implementation of it,
with a perfect integration with other bricks of the framework.
In this second part of this series of blog articles, we will introduce the
Mustache syntax.
You can download this documentation
as one single pdf file.
Mustache Logic-less templates for Delphi - part 1
2014-04-28. Open Source › Open Source libraries
Mustache is a well-known
logic-less template engine.
There is plenty of Open Source implementations around (including in JavaScript,
which can be very convenient for AJAX applications on client side, for
instance).
For mORMot, we created the first pure Delphi implementation of it,
with a perfect integration with other bricks of the framework.
In this first part of this series of blog articles, we will introduce the
Mustache design.
You can download this documentation
as one single pdf file.
2012-07-10
Better Unicode support in Reports and PDF generation
2012-07-10. Open Source › Open Source libraries
By default, both GDI+ anti-aliased drawing and PDF file generation using our libraries did lack of font-fallback implementation.
If some of the characters in a string are not supported in a requested font, they were drawn as square symbols on the GDI+ canvas or the PDF content.
The font-fallback mechanism implemented will use a third-party font (Arial Unicode MS by default, which is installed with Microsoft Office), for any glyph that are missing when rendering the content. Of course, for PDF generation, you are able to embed the font within the generated file (this is by the way mandatory for PDF/A-1 format).
Both of these new features are handled by the SQlite3Pages
unit, i.e. for report anti-aliased drawing preview and PDF generation.
By the way, the TGDIPages
class itself (the one used for
report generation from
code) now handles by default Unicode text, even with Delphi
versions prior to 2009 (via the SynUnicode
string type, which maps
WideString
before Delphi 2009, then UnicodeString
starting with Delphi 2009). Does make sense with such
a font-fallback mechanism.
2012-06-24
Use TDataSet in mORMot or SynDB
2012-06-24. Open Source › Open Source libraries
In our documentation, and in all our code source, we avoid using the VCL
DB.pas
related units, and all the associated RAD
components.
This is by design, since our experiment encouraged us to "think ORM, forget
anything about RAD (and even SQL in most cases)" in mORMot.
And it introduced some nice border-side effect to Delphi users, e.g. that even
a "Delphi Starter Edition" is able to use mORMot, have access to
SQLite3, MS SQL or Oracle or any other DB, add
interface-based RESTful
JSON services over it, just for free...
But in the real world, you may need to upgrade some existing application,
get rid of the BDE, or add a SOA layer over an existing business
intelligence.
And mORMot is able to serve you well in those scenarios.
That's why we just added a first attempt to expose SynDB
results
and mORMOt TSQLTableJSON
content into a
TDataSet
.
2012-06-23
SynDBExplorer enhancements
2012-06-23. Open Source › Open Source libraries
Our SynDBExplorer free tool has been enhanced. A SQL request history has been added to the software. It is now able to handle directly Jet / MSAccess .mdb files. It has also several fixes included (including Oracle direct link), and the internal SQLite3 engine has been updated to its latest […]
2012-01-17
SynDBExplorer fast direct export
2012-01-17. Open Source › Open Source libraries
The Open Source SynDBExplorer tool has been enhanced these days.
Main new features are:
- Execution of the current selected text (if any) instead of the whole memo content;
- "Exec & Export" new button, for direct export to file.
And the new exporting features are opening new possibilities.
2011-08-20
Enhanced Log viewer
2011-08-20. Open Source › Open Source libraries
We already shipped a sophisticated set of logging classes some month ago.
Since then, its features have been enhanced, and the system has been deeply interfaced with our main ORM framework. Now almost all low-level or high-level operations can be logged on request.
But since the log files tend to be huge (for instance, if you set the logging for our unitary tests, the 6,000,000 unitary tests creates a 280 MB log file), a log viewer was definitively in need.
2011-07-22
SynDBSQLite3: SQLite3 direct access
2011-07-22. Open Source › Open Source libraries
For our ORM framework, we implemented an efficient SQLite3 wrapper, joining statically (i.e. without any external dll) the SQLite3 engine to the executable. SQLite3 is in fact used as the DB kernel of the framework. For instance, thanks to its unique virtual table mechanism, even tables in other databases (like Oracle or MSSQL) are available as if they were SQLite3 tables.
We just made this wrapper independent from our ORM, in a new dedicated unit,
named
SynSQLite3.pas
.
It was an easy task to let this unit be called from our SynDB database abstract classes.
2011-04-14
Enhanced logging in SynCommons
2011-04-14. Open Source › Open Source libraries
Logging is everything... unless you never wrote a bug in your program!
Let us introduce a new logging class:
- logging with a set of levels;
- fast, low execution overhead;
- can load .map file symbols to be used in logging;
- compression of .map into binary .mab (900 KB -> 70 KB);
- inclusion of the .map/.mab into the .exe;
- reading of an external .map to add unit names and line numbers to a log file without .map available information at execution;
- exception logging (Delphi or low-level exceptions) with unit names and line numbers;
- optional stack trace with units and line numbers;
- methods or procedure recursive tracing, with Enter and auto-Leave;
- high resolution time stamps, for customer-side profiling of the application execution;
- set / enumerates / TList / TPersistent / TObjectList / TContainer / dynamic array JSON serialization;
- per-thread or global logging;
- multiple log files on the same process;
- integrated log archival (in zip or any other format);
- Open Source, works from Delphi 6 up to XE.
2011-03-05
Open Source SynTaskDialog unit for XP,Vista,Seven
2011-03-05. Open Source › Open Source libraries
A task dialog is a dialog box that can be used to display information and receive simple input from the user. Like a message box, it is formatted by the operating system according to parameters you set. However, a task dialog has many more features than a message box.
Windows provides a generic task dialog available since Vista/Seven. But there is none available with previous versions of Windows, i.e. Windows XP or 2K.
This unit (licensed under a MPL/GPL/LGPL tri-license) will use the new TaskDialog API under Vista/Seven, and emulate it with pure Delphi code and standard themed VCL components under XP or 2K. It will compile from Delphi 6 up to XE, and is Unicode ready.
2010-12-04
SynScaleMM - a multi-thread scaling Memory Manager
2010-12-04. Open Source › Open Source libraries
We just released a new unit to the source code repository.
It's a simple, small and compact MM, built on top of the main Memory Manager(FastMM4 is a good candidate, standard since Delphi 2007), architectured in order to scale on multi core CPU's (which is what FastMM4 is lacking).
Original code is ScaleMM - Fast scaling memory manager for Delphi by André Mussche.
2010-07-27
Hyphenation in Delphi
2010-07-27. Open Source › Open Source libraries
We made some years ago a Delphi unit for hyphenation of text.
Such an unit, together with our SynPdf library for example, could be useful in your application. So we released the source!
2010-06-26
Pure pascal LZO and SynLZ compression units
2010-06-26. Open Source › Open Source libraries
In our Source Code repository you would have perhaps noted the SynLZ.pas and SynLZO.pas units.
These are two in-memory compression units, optimized for speed.
SynLZ is a brand new LempelZiv-based compression algorithm, the fastest around for compression speed, so very suitable for using on Server side, with very low CPU consumption.
2010-04-02
Antialiased drawing from TMetaFile
2010-04-02. Open Source › Open Source libraries
The new version of our Open Source SynGdiPlus unit
does provide a lot of new features:
- dynamic linking (your program runs even on Windows 98/2000), without the
gdiplus.dll library
- use version 1.1 of GDI+ if available on your system (under Vista/Seven or the
one embedded since Office 2003)
- can convert from a TMetaFile (i.e. emf) into a GDI+ metafile (i.e.
emf+)
- can draw TMetaFiles into any canvas, with
GDI+ anti-aliasing!
« previous entries - page 1 of 2