The POCO C++ Libraries Blog

Archive

Applied Informatics at ESE Kongress 2013

Filed under: Events,News by guenter at 21:20

ESE Kongress Banner
Meet me at Embedded Software Engineering Kongress in Sindelfingen, Germany, from December 3-5 in the exhibition area and if you’re there, don’t miss my talk “Sichere Fernwartung über das Internet” (secure internet-based remote access and management) on Thursday, December 5. Looking forward to meeting you there!

Günter

Overload “Dynamic C++, Part II” Article

Filed under: News by alex at 14:06

The second part of “Dynamic C++” article has been published in the
ACCU Overload Journal.
Overload116

POCO Stable Release 1.4.6p2 and Development Release 1.5.2 Available

Filed under: News by guenter at 21:45

The waiting is over — we finally have the new releases out, available for download. Stable release 1.4.6p2 contains mostly bugfixes, upgrades to some bundled libraries (expat, zlib and sqlite) and a few new features (e.g. ColorConsoleChannel). As usual, the CHANGELOG has all details. Upgrading is recommended for everyone using 1.4.x releases.

Development release 1.5.2 adds the MongoDB client library, contains significant updates to the JSON library, adds all changes from 1.4.6p2 and a whole lot of other improvements and fixes. The CHANGELOG has it all. Please note that there are still a few rough edges — it’s still a development release after all. Most importantly, embedded and mobile platforms (iOS, Android, Embedded Linux, WinCE, QNX) have not been tested and (as is the case for WinCE) may not even build.

POCO 1.5.2 Release Candidate 2 Available

Filed under: Development,News by alex at 02:02

Due to a significant amount of fixes during the last week, 1.5.2 Release Candidate 2 is now tagged on GitHub.

Please report any problems back to this list or as a GitHub issue.

To allow for more testing, release projection was pushed forward a week, to June 24 2013.

POCO Team

POCO 1.5.2 Release Candidate 1 Available

Filed under: Development,News by alex at 06:26

1.5.2 Release Candidate 1 is now tagged on GitHub:

Please report any problems back to this list or as a GitHub issue.

Release is projected for June 17 2013.

POCO Team

Overload “Dynamic C++, Part I” Article

Filed under: Events,News by alex at 03:16

The first part of “Dynamic C++” article has been published in the
ACCU Overload Journal.
Overload115

“C++ Now” Presentations

Filed under: Events,News by alex at 06:10

On Thursday, May 16 2013, there will be two POCO-related presentations at the
C++ Now conference in Aspen, Colorado:





DB2HTML5



Code is in GitHub repository, stay tuned for slides and videos …

Dynamic C++ in a nutshell

Filed under: Events,News by alex at 10:23

Slides are available on SlideShare

Courtesy of Schalk Cronjé tweet – his notes on the ACCU 2013 Dynamic C++ presentation:

Dynamic C++ in a nutshell

Dynamic C++ in a nutshell

Release 1.4.6p1 Available

Filed under: News by guenter at 22:41

Stable release 1.4.6p1 contains various bugfixes and a few minor new features. See the CHANGELOG for the details.

Get the source code from the download page or directly from GitHub.

Library AutoiNEATialization

Filed under: Development,Tips & Tricks by alex at 18:00

In some of POCO libraries (Net on Windows, Data back-ends, Crypto, NetSSL …), there is a need for early library initialization. This task has been done so far in a couple of ways (neither elegant) – we either

  • (1) call initialization (repeatedly) from some strategic points in the library (Net, SSL) that we know will get hit early, or
  • (2) mandate early explicit call (un)initialization (Data back-ends) early from user code.

So, the question here is: can we (and, if the answer is yes, how?) improve the current state?

  • Problem: do tasks early at application init or shared library load, ensuring they are executed prior to any other activity depending on them.
  • Examples: Windows network initialization, DB back-end registration with front-end registry …
  • Solution: looks simple at first, then not so simple when the reality of (1) dynamic/static linkage (on Windows in particular), (2) static variable initialization timing/order and (3) dynamic library loading order (e.g. Data and back-end libraries) hits.

At first, one would think this (SQLite back-end with abbreviated names used as an example here) will do the trick:

// Connector.h:
struct SQLite_API SQLiteRegistrator
{

SQLiteRegistrator()
{
SQLite::Connector::registerConnector();
}

~SQLiteRegistrator()
{
SQLite::Connector::unregisterConnector();
}

};

extern "C" struct SQLite_API SQLiteRegistrator sqliteRegistrator;

// Connector.cpp:
SQLiteRegistrator sqliteRegistrator;

Alas, MSVC will disregard your wishes in both static and dynamic library builds when it sees that the registrator is “not used” anywhere. Luckily, there’s a way to force the linkage:

#pragma(comment (linker, "/include:_sqliteRegistrator")

With some ifdef-ing for 64-bit (no underscore decoration) and dynamic exports, it turns out that the task is achievable:

#pragma(comment (linker, "/export:sqliteRegistrator")

So, now we have a way to force initialization without having to explicitly call registerConnector from user code (or peppering library with initialization code).

Details are in GitHub repo (Net and Data back-ends only at the time of this writing).

This modification was tested on Windows, Mac and Linux, static and shared builds; I’m putting a word out to hear comments and make sure I did not miss something important, so suggestions are more than welcome. I’d like to have this in the upcoming 1.5.2.

« Previous PageNext Page »