Release Notes — WUIC Framework v1.7.23
Date: 7 October 2026 Previous published version: 1.7.22 (6 October 2026) Backend: .NET 10 + IIS / Linux nginx Frontend: Angular 21
A stability-under-load release, with fixes to reports, import and notifications outside SQL Server. In short:
- the MySQL provider uses the MySqlConnector driver instead of MySql.Data;
- the session check is kept in memory for a few seconds, so close-together requests from the same user no longer query the database every time;
- process memory no longer grows because of the disabled list data cache or of closed WebSockets;
- on Linux, reports no longer raise a printing exception every time they are opened;
- the "Stampa ordine" sample report has a variant for MySQL, PostgreSQL and Oracle;
- import recognises the "SI"/"NO" booleans written by export, and scheduler notifications are sent outside SQL Server too.
Each item below states where it was verified. Installation tests were run on Linux with MySQL, including under load (500 simulated users for 45 minutes); the rest is covered by unit tests.
🗄️ MySQL provider
- MySqlConnector 2.6.2 driver.
Wuic.MySqlProviderdepends on MySqlConnector instead of MySql.Data 9.0.0. With MySql.Data a load test at about 700 users stalled because of thread starvation, and a timeout in the TLS handshake could terminate the process. MySqlConnector is the same driver that EF Core and OData already use on MySQL. - Connection strings unchanged. Existing strings work as they are: the provider adds
IgnoreCommandTransaction=trueandAllowUserVariables=trueby itself, reproducing the MySql.Data behaviour for transactions and@xvariables in scripts. - SQL scripts. First-run and setup scripts are split into statements by the provider, with the
DELIMITERdirectives of procedures and triggers, as before.
Verified on Linux with MySQL, including under load, and with unit tests.
⚡ Memory and load
- Cached session. The result of a session check stays valid for
authUserCacheSecondsseconds (default5, maximum60,0= disabled). Login, logout, revocations and permission changes invalidate it immediately. Verified on Linux with MySQL and with unit tests. - List data cache. With
cacheDataMinutesmissing or0(the default) list results are no longer kept in memory. With the cache on, each route keeps at most 500 queries: to make room, expired entries go first, then the oldest. In the load test, memory in use at rest dropped from 609 to 292 MB. - Closed WebSockets. A closed WebSocket connection no longer stays in memory until the process restarts.
📄 Reports
- "Stampa ordine" per DBMS. The sample report
orders/StampaOrdine.mrtis written in T-SQL and came out empty on MySQL, PostgreSQL and Oracle. The sample project now containsStampaOrdine.mysql.mrt,StampaOrdine.postgres.mrtandStampaOrdine.oracle.mrt. On MySQL it is verified on Linux; for PostgreSQL and Oracle the queries were verified on the sample databases. - Variants for your own reports. Viewer, designer and export use
Name.<dbms>.mrt(suffixesmysql,postgres,oracle) if it exists next toName.mrtand the route is on that database. Without a variant the usual file is used. - Reports on Linux. No more printing exception (
PrintingServices) every time a report is opened. Verified on Linux with MySQL: pages, margins and content identical to before. - Export encodings. Windows code pages (1250-1258) appear in the viewer's encoding list, where they were missing before. Covered by unit tests.
- Framework-generated queries. In the queries the framework generates by itself (point column rendered as JSON, print filters) curly braces are no longer evaluated as Stimulsoft expressions: on MySQL every print of a report with a point column gave a parsing error on
ST_Y. This also applies to reports generated earlier. Verified on Linux with MySQL.
🐛 Notable bug fixes
- Boolean import. The "SI"/"NO" values that export writes in boolean columns are recognised on import, in the code shared by all databases. Before, on PostgreSQL a true value could come back false without any error, and on MySQL the import failed. Covered by unit tests.
- Notifications outside SQL Server. The "export completed" notification is sent on MySQL, PostgreSQL and Oracle too; verified on Linux with MySQL.
- Scheduler "Run now". On MySQL, PostgreSQL and Oracle the button already failed while reading the schedule and the completion notification was never sent; it now runs the schedule and sends the notification. Covered by unit tests.
- Scheduler notification text. On SQL Server too, the message showed the name of an internal type instead of the result of the run.
- Browser language. A user with no language set and a browser in a language without a country (for example
it) saw translation keys instead of texts: the language now resolves to the supported variant (it-IT). Covered by unit tests.
📦 Updated packages
| Package | From | To |
|---|---|---|
WuicCore |
1.7.22 | 1.7.23 |
Wuic.Webcore |
1.7.22 | 1.7.23 |
WuicOData |
1.7.22 | 1.7.23 |
RuntimeEfCore |
1.7.22 | 1.7.23 |
Wuic.MySqlProvider |
1.7.22 | 1.7.23 |
Wuic.PostgresProvider |
1.7.22 | 1.7.23 |
Wuic.OracleProvider |
1.7.22 | 1.7.23 |
wuic-framework-lib (npm) |
1.7.22 | 1.7.23 |
MySql.Data → MySqlConnector (dependency of Wuic.MySqlProvider) |
9.0.0 | 2.6.2 |
🔧 Recommended operational updates when upgrading
- Your own code on MySQL: if the project uses MySql.Data types (for example it catches
MySql.Data.MySqlClient.MySqlException), add the MySqlConnector package and switch to theMySqlConnectornamespace. - Several nodes behind a load balancer: a logout or revocation on one node applies to the others within
authUserCacheSecondsseconds. Set0if it must apply everywhere immediately. - "Stampa ordine" report on MySQL, PostgreSQL or Oracle: in projects created from an earlier version, copy the
StampaOrdine.<dbms>.mrtfile for your database from the 1.7.23 package intoReports/orders. - List data cache: users of
cacheDataMinuteshave nothing to do; beyond 500 queries per route the oldest entries leave the cache.