EiffelStudio 26.09 Releases: Difference between revisions

From EiffelStudio: an EiffelSoftware project
Jump to navigation Jump to search
Created page with "Category:Releases__NOTOC__{{ReleaseHistoryHeader}} __NOTOC__ = Next EiffelStudio Release= Beta download: https://account.eiffel.com/downloads/channel/beta Stable downl..."
 
No edit summary
 
Line 11: Line 11:
= EiffelStudio 26.09 — Changelog =
= EiffelStudio 26.09 — Changelog =


Changes from <code><nowiki>Eiffel_25.12</nowiki></code> to <code><nowiki>Eiffel_26.09</nowiki></code>. 197 commits, 2026-01-02 to 2026-10-13.
Changes from <code>Eiffel_25.12</code> to <code>Eiffel_26.09</code>. 197 commits, 2026-01-02 to 2026-10-13.


Commits that were also cherry-picked into <code><nowiki>Eiffel_25.12</nowiki></code> (and so already shipped with 25.12) are left out. These are: the EV_FONT_I.copy_font precondition fix, the GTK buffer overflow fix, the first S3 client version, the first PostgreSQL EiffelStore binding, and the CMS PostgreSQL storage work. Version bumps, CD key updates and the eiffel.com / account.eiffel.com website changes are listed at the end.
Commits that were also cherry-picked into <code>Eiffel_25.12</code> (and so already shipped with 25.12) are left out. These are: the EV_FONT_I.copy_font precondition fix, the GTK buffer overflow fix, the first S3 client version, the first PostgreSQL EiffelStore binding, and the CMS PostgreSQL storage work. Version bumps, CD key updates and the eiffel.com / account.eiffel.com website changes are listed at the end.


----
----
Line 19: Line 19:
== Compiler ==
== Compiler ==


* Smarter detection of the common type of a manifest array, so typed manifest arrays (<code><nowiki>{ARRAY [T]} &lt;&lt; ... &gt;&gt;</nowiki></code>) are needed less often with generic types. (9beecfe9dc7, merge 81cdf3751f5)
* Smarter detection of the common type of a manifest array, so typed manifest arrays (<code>{ARRAY [T]} <<... >></code>) are needed less often with generic types. (9beecfe9dc7, merge 81cdf3751f5)
** Fixed a segmentation fault during finalization when the merged type of a manifest array came from tuples (<code><nowiki>TUPLE_TYPE_A</nowiki></code> was rebuilt as a plain <code><nowiki>GEN_TYPE_A</nowiki></code>). (573d0dd9ec0)
** Fixed a segmentation fault during finalization when the merged type of a manifest array came from tuples (<code>TUPLE_TYPE_A</code> was rebuilt as a plain <code>GEN_TYPE_A</code>). (573d0dd9ec0)
** Fixed a regression where the fallback type lost attachment and separateness: <code><nowiki>&lt;&lt; a, b &gt;&gt;</nowiki></code> with <code><nowiki>detachable</nowiki></code> elements gave <code><nowiki>ARRAY [ANY]</nowiki></code> instead of <code><nowiki>ARRAY [detachable ANY]</nowiki></code>. Fixes eweasel exec368 and exec369. (f9e59391d05)
** Fixed a regression where the fallback type lost attachment and separateness: <code><< a, b >></code> with <code>detachable</code> elements gave <code>ARRAY [ANY]</code> instead of <code>ARRAY [detachable ANY]</code>. Fixes eweasel exec368 and exec369. (f9e59391d05)
* Fixed "Current used before initialized" being reported for non-object calls (bug#19974). (699e6cde2a6, d88153ae5da)
* Fixed "Current used before initialized" being reported for non-object calls (bug#19974). (699e6cde2a6, d88153ae5da)
* Added eweasel tests for bugs reported by Eric Bezault (once031/032/034/035/039, valid301/305–308/310). Updated exec153, exec368 and valid148 (now expects VUAR(2)). (5a845baca76, 2731333b1ad, 1f82f939e39)
* Added eweasel tests for bugs reported by Eric Bezault (once031/032/034/035/039, valid301/305–308/310). Updated exec153, exec368 and valid148 (now expects VUAR(2)). (5a845baca76, 2731333b1ad, 1f82f939e39)
Line 32: Line 32:
* Project Settings also use the Find Library dialog to add libraries to the edited target. (6c7e36de916)
* Project Settings also use the Find Library dialog to add libraries to the edited target. (6c7e36de916)
* Precompiled libraries are supported: a new "precompiled" category, and the dialog can replace the current precompile and offer a full recompile. (41c1bafbd09)
* Precompiled libraries are supported: a new "precompiled" category, and the dialog can replace the current precompile and offer a full recompile. (41c1bafbd09)
* Search options: strict and non-strict matching (non-strict, the default, is <code><nowiki>*text*</nowiki></code>), a <code><nowiki>category:</nowiki></code> criterion, a Category column, and finding Libraries or Classes. (77b811d616f, de33d5daf0a)
* Search options: strict and non-strict matching (non-strict, the default, is <code>*text*</code>), a <code>category:</code> criterion, a Category column, and finding Libraries or Classes. (77b811d616f, de33d5daf0a)
* Configurable categories: only <code><nowiki>official</nowiki></code>, <code><nowiki>contrib</nowiki></code> and <code><nowiki>precompiled</nowiki></code> are built in. The others come from <code><nowiki>package.iron</nowiki></code> files and IRON packages, and you choose which ones show as filters. (294b1c7a11c)
* Configurable categories: only <code>official</code>, <code>contrib</code> and <code>precompiled</code> are built in. The others come from <code>package.iron</code> files and IRON packages, and you choose which ones show as filters. (294b1c7a11c)
* Details panel: description, void-safety, metadata, links, classes, IRON install/uninstall, and an editable location and name in the project, with validation. (feea2d72590)
* Details panel: description, void-safety, metadata, links, classes, IRON install/uninstall, and an editable location and name in the project, with validation. (feea2d72590)
* The layout adapts to narrow windows: drop-down menus replace the button rows, and the panels are in viewports. (650009dcb9c)
* The layout adapts to narrow windows: drop-down menus replace the button rows, and the panels are in viewports. (650009dcb9c)
* "Custom" button only in the Add Library dialog, and better formatting of the details. (100d0378bef)
* "Custom" button only in the Add Library dialog, and better formatting of the details. (100d0378bef)
* New reusable widgets <code><nowiki>LIBRARY_SEARCH_BOX</nowiki></code> and <code><nowiki>LIBRARY_DETAILS_BOX</nowiki></code>, shared with the Add Library and Add Precompile dialogs. Tests in <code><nowiki>TEST_LIBRARY_SEARCH_SCORER</nowiki></code>. (de33d5daf0a, 452c592d907)
* New reusable widgets <code>LIBRARY_SEARCH_BOX</code> and <code>LIBRARY_DETAILS_BOX</code>, shared with the Add Library and Add Precompile dialogs. Tests in <code>TEST_LIBRARY_SEARCH_SCORER</code>. (de33d5daf0a, 452c592d907)


=== Library scanning and IRON ===
=== Library scanning and IRON ===
* Library scanning follows the <code><nowiki>project</nowiki></code> section of <code><nowiki>package.iron</nowiki></code>. Only the ECF files declared there count as libraries, and the package information applies to each of them. The default library name is <code><nowiki>&lt;package&gt;_&lt;project&gt;</nowiki></code>. (1642284e5e8)
* Library scanning follows the <code>project</code> section of <code>package.iron</code>. Only the ECF files declared there count as libraries, and the package information applies to each of them. The default library name is <code><package>_<project></code>. (1642284e5e8)
* <code><nowiki>package.iron</nowiki></code> files: added the missing <code><nowiki>project</nowiki></code> entries, removed the obsolete <code><nowiki>-safe</nowiki></code> ECFs from ise_gobo, and added a <code><nowiki>category</nowiki></code> field. (0c0a4c2acf5, 392a6405846)
* <code>package.iron</code> files: added the missing <code>project</code> entries, removed the obsolete <code>-safe</code> ECFs from ise_gobo, and added a <code>category</code> field. (0c0a4c2acf5, 392a6405846)
* ECFs whose library target is extended by an application target (for example, Gobo examples and tests) are no longer listed as libraries. (f7bcf612784)
* ECFs whose library target is extended by an application target (for example, Gobo examples and tests) are no longer listed as libraries. (f7bcf612784)
* IRON packages manager: you can register and unregister IRON repositories ("Add..." / "Remove"). (88f5fca36a9)
* IRON packages manager: you can register and unregister IRON repositories ("Add..." / "Remove"). (88f5fca36a9)
* The <code><nowiki>iron</nowiki></code> tool handles the new <code><nowiki>category</nowiki></code> field. (f3b94f6c8e8)
* The <code>iron</code> tool handles the new <code>category</code> field. (f3b94f6c8e8)
* Library caches and the class index are versioned and rebuilt automatically. (77b811d616f, f7bcf612784)
* Library caches and the class index are versioned and rebuilt automatically. (77b811d616f, f7bcf612784)


=== SCM tool ===
=== SCM tool ===
* The status box uses a compact docking toolbar. "Check all" is a toolbar button. The commit button is a dual popup that shows the active changelist and its item count, and its menu can commit, select, create or clear a changelist. Display options moved to a drop-down menu. New <code><nowiki>SCM_CHANGELIST_NAME_DIALOG</nowiki></code>. (74ffecbb4f7, 1d88b0643ce)
* The status box uses a compact docking toolbar. "Check all" is a toolbar button. The commit button is a dual popup that shows the active changelist and its item count, and its menu can commit, select, create or clear a changelist. Display options moved to a drop-down menu. New <code>SCM_CHANGELIST_NAME_DIALOG</code>. (74ffecbb4f7, 1d88b0643ce)


=== Other IDE fixes ===
=== Other IDE fixes ===
Line 58: Line 58:


=== Translations ===
=== Translations ===
* Updated the <code><nowiki>.pot</nowiki></code> and <code><nowiki>.po</nowiki></code> templates with the new Find Library and IRON messages. (75ea515cabd, 95a70cdb098)
* Updated the <code>.pot</code> and <code>.po</code> templates with the new Find Library and IRON messages. (75ea515cabd, 95a70cdb098)
* Filled missing entries: French (2848), Spanish (5802), German, Russian and Chinese (simplified) (79 new entries each). (c3713b8b0ee, b3300eee41e, fdaa423bbfa, 46e9a4464ec, 06a99f52b14)
* Filled missing entries: French (2848), Spanish (5802), German, Russian and Chinese (simplified) (79 new entries each). (c3713b8b0ee, b3300eee41e, fdaa423bbfa, 46e9a4464ec, 06a99f52b14)


== Platforms and toolchain ==
== Platforms and toolchain ==


* New platform: <code><nowiki>macosx-arm64</nowiki></code>. (cd17f41a317)
* New platform: <code>macosx-arm64</code>. (cd17f41a317)
* Added CONFIGS for Windows ARM. (879cd93b2b3)
* Added CONFIGS for Windows ARM. (879cd93b2b3)
* Visual Studio 2026 support in <code><nowiki>finish_freezing</nowiki></code>. (c8727317590)
* Visual Studio 2026 support in <code>finish_freezing</code>. (c8727317590)
* Fixed C compilation of libfcgi with GCC 14 and later. (87c5d4b7644)
* Fixed C compilation of libfcgi with GCC 14 and later. (87c5d4b7644)
* macOS: fixed opening URLs and files. (8745c96d6d5)
* macOS: fixed opening URLs and files. (8745c96d6d5)
Line 73: Line 73:


=== EiffelBase ===
=== EiffelBase ===
* Fixed a possible issue when the argument is an <code><nowiki>IMMUTABLE_STRING_8</nowiki></code> created with <code><nowiki>make_from_area_and_bounds</nowiki></code> (contributed by Finnian Reilly). (8d564dd1e5f)
* Fixed a possible issue when the argument is an <code>IMMUTABLE_STRING_8</code> created with <code>make_from_area_and_bounds</code> (contributed by Finnian Reilly). (8d564dd1e5f)


=== EiffelVision2 (GTK 3) ===
=== EiffelVision2 (GTK 3) ===
* HiDPI and text scaling: GNOME text scaling and <code><nowiki>gtk-xft-dpi</nowiki></code> are honored, and fonts update live when desktop settings change. (a01d4de0a48)
* HiDPI and text scaling: GNOME text scaling and <code>gtk-xft-dpi</code> are honored, and fonts update live when desktop settings change. (a01d4de0a48)
* Fixes for HiDPI, multi-monitor, XWayland and drag and drop. (9688da06601)
* Fixes for HiDPI, multi-monitor, XWayland and drag and drop. (9688da06601)
* Pixbuf and Cairo sizes are clamped to 1..32767 to avoid <code><nowiki>X_CreatePixmap BadValue</nowiki></code> errors. Fixed the custom cursor hotspot. (a01d4de0a48)
* Pixbuf and Cairo sizes are clamped to 1..32767 to avoid <code>X_CreatePixmap BadValue</code> errors. Fixed the custom cursor hotspot. (a01d4de0a48)
* Restored UI responsiveness: GDK events are now forwarded through <code><nowiki>gtk_main_do_event</nowiki></code>, and button events are routed the GTK 2 way. (a01d4de0a48)
* Restored UI responsiveness: GDK events are now forwarded through <code>gtk_main_do_event</code>, and button events are routed the GTK 2 way. (a01d4de0a48)
* No more GLib abort ("No GSettings schemas are installed") when schemas are not on the search path, for example with GTK from MacPorts or Homebrew, or a relocated GTK. This also fixes the "hicolor theme was not found" warning. (df8685f8512)
* No more GLib abort ("No GSettings schemas are installed") when schemas are not on the search path, for example with GTK from MacPorts or Homebrew, or a relocated GTK. This also fixes the "hicolor theme was not found" warning. (df8685f8512)
* Fixed a dead key followed by space (e.g. <code><nowiki>"</nowiki></code> + space) inserting a space instead of the composed character. This also applies to GTK 2. (3d1b68c581c)
* Fixed a dead key followed by space (e.g. <code>"</code> + space) inserting a space instead of the composed character. This also applies to GTK 2. (3d1b68c581c)
* Fixed a possible blocking behavior caused by modal windows. (5387d0db4f8)
* Fixed a possible blocking behavior caused by modal windows. (5387d0db4f8)
* Removed GLib-GObject-CRITICAL warnings (<code><nowiki>g_value_set_boolean</nowiki></code>). (185a5665df2, d75bf60a2b6)
* Removed GLib-GObject-CRITICAL warnings (<code>g_value_set_boolean</code>). (185a5665df2, d75bf60a2b6)
* Editor library: fixed void-safe code. (68f19f306e0)
* Editor library: fixed void-safe code. (68f19f306e0)


Line 92: Line 92:


=== EiffelStore ===
=== EiffelStore ===
* MySQL/MariaDB: optional skipping of SSL checks, and support for the <code><nowiki>client</nowiki></code> section of <code><nowiki>~/.my.cnf</nowiki></code>. This makes MySQL 8.x <code><nowiki>caching_sha2_password</nowiki></code> setups easier. (e4e5e818fd2)
* MySQL/MariaDB: optional skipping of SSL checks, and support for the <code>client</code> section of <code>~/.my.cnf</code>. This makes MySQL 8.x <code>caching_sha2_password</code> setups easier. (e4e5e818fd2)
* MySQL/MariaDB: <code><nowiki>connect</nowiki></code> forces TCP, so <code><nowiki>localhost</nowiki></code> plus a port works (e.g. docker), and no longer hides the real connection error behind "2006 Server has gone away". (0b92704f644)
* MySQL/MariaDB: <code>connect</code> forces TCP, so <code>localhost</code> plus a port works (e.g. docker), and no longer hides the real connection error behind "2006 Server has gone away". (0b92704f644)
* MySQL: supports a wider range of client library versions. (0b8ea3891f1)
* MySQL: supports a wider range of client library versions. (0b8ea3891f1)
* MariaDB now works on Unix: ECF, config script and linker flag fixes. (8745bc002f1, f3423c08ae1, 68c20d626d4, 11a0afbf3bb)
* MariaDB now works on Unix: ECF, config script and linker flag fixes. (8745bc002f1, f3423c08ae1, 68c20d626d4, 11a0afbf3bb)
* Better support of the <code><nowiki>DATE</nowiki></code> SQL type, and optional <code><nowiki>DECIMAL</nowiki></code> support, for MySQL and MariaDB. (252e4bed0e0, 229d0c3575d)
* Better support of the <code>DATE</code> SQL type, and optional <code>DECIMAL</code> support, for MySQL and MariaDB. (252e4bed0e0, 229d0c3575d)
* Uses <code><nowiki>UTF_CONVERTER</nowiki></code> for UTF encoding. (43177b23af1)
* Uses <code>UTF_CONVERTER</code> for UTF encoding. (43177b23af1)
* Updated the EiffelStore metadata. (38f806b51bf)
* Updated the EiffelStore metadata. (38f806b51bf)


Line 104: Line 104:
* '''EiffelTUI''' — a terminal user interface library inspired by Ratatui: immediate-mode, double-buffered rendering, constraint layouts, styled text, keyboard and mouse events, and many widgets (table, list, tabs, charts, canvas, tree, text input, calendar, popup...). (520df9440fb)
* '''EiffelTUI''' — a terminal user interface library inspired by Ratatui: immediate-mode, double-buffered rendering, constraint layouts, styled text, keyboard and mouse events, and many widgets (table, list, tabs, charts, canvas, tree, text input, calendar, popup...). (520df9440fb)
* '''Markdown''' — parser, plus XHTML and AST generators, with documentation. (23c8924440b, 9a9a1b308c8)
* '''Markdown''' — parser, plus XHTML and AST generators, with documentation. (23c8924440b, 9a9a1b308c8)
* '''YAML''' — parser and writer with timestamp support, helpers for common Eiffel types, and a <code><nowiki>yaml_json</nowiki></code> converter tool. (7c0712cc37d, 0209b12bde4, cb708fb0b94, a6bc471eb56, 7aa5049ecea)
* '''YAML''' — parser and writer with timestamp support, helpers for common Eiffel types, and a <code>yaml_json</code> converter tool. (7c0712cc37d, 0209b12bde4, cb708fb0b94, a6bc471eb56, 7aa5049ecea)
* '''BSON''' — parser and writer, a BSON/JSON converter (<code><nowiki>bsonjson</nowiki></code> tool), and a new '''stream''' library that abstracts parser input (string or file). (a4aee56e92f, b6650375c7e, 1232ccfe3be)
* '''BSON''' — parser and writer, a BSON/JSON converter (<code>bsonjson</code> tool), and a new '''stream''' library that abstracts parser input (string or file). (a4aee56e92f, b6650375c7e, 1232ccfe3be)
* '''Crypto''' — cryptographically secure pseudorandom number generator (CSPRNG) for Unix and Windows (unstable library). (10e8eef9434, 1667bbd443b)
* '''Crypto''' — cryptographically secure pseudorandom number generator (CSPRNG) for Unix and Windows (unstable library). (10e8eef9434, 1667bbd443b)


=== Other library updates ===
=== Other library updates ===
* S3 client: CommonPrefixes retrieval (to list "directories"), string type fixes, and packaging updates. (a99a47046e7, 3c85269405f, d24b1c03794, 79e536404fd, 1cc64138921, a400e7a7578)
* S3 client: CommonPrefixes retrieval (to list "directories"), string type fixes, and packaging updates. (a99a47046e7, 3c85269405f, d24b1c03794, 79e536404fd, 1cc64138921, a400e7a7578)
* JSON: added <code><nowiki>JSON_VALUE.is_boolean</nowiki></code>. (f7b6f456a0d)
* JSON: added <code>JSON_VALUE.is_boolean</code>. (f7b6f456a0d)
* HTTP protocol: support for the <code><nowiki>Link:</nowiki></code> header. (867b551f158)
* HTTP protocol: support for the <code>Link:</code> header. (867b551f158)
* http_client: updated ECFs, new loop syntax, unique UUIDs. (b7b60f04aac, 5b2f9ab0d60, 13640b954eb)
* http_client: updated ECFs, new loop syntax, unique UUIDs. (b7b60f04aac, 5b2f9ab0d60, 13640b954eb)
* EWF/WSF: <code><nowiki>is_whitespace</nowiki></code> query on request values. In the router, <code><nowiki>alias "-"</nowiki></code> removes a request method. (5c5d0c2d0ff, 593a46f9474)
* EWF/WSF: <code>is_whitespace</code> query on request values. In the router, <code>alias "-"</code> removes a request method. (5c5d0c2d0ff, 593a46f9474)
* Decimal: <code><nowiki>make_from_string</nowiki></code> accepts <code><nowiki>READABLE_STRING_8</nowiki></code>, and new <code><nowiki>DECIMAL_ACCESS</nowiki></code>. (879d2c754fe)
* Decimal: <code>make_from_string</code> accepts <code>READABLE_STRING_8</code>, and new <code>DECIMAL_ACCESS</code>. (879d2c754fe)
* JWT: type declaration cleanup. (5531b7b816d)
* JWT: type declaration cleanup. (5531b7b816d)
* MongoDB: fixed compilation on Unix, and fixed the books_restapi example. (227997f512c, 6e35ab671d0, 968c79d0225)
* MongoDB: fixed compilation on Unix, and fixed the books_restapi example. (227997f512c, 6e35ab671d0, 968c79d0225)
Line 120: Line 120:
* AutoTest: fixed a possible call on a Void target. (f1350c0fd72)
* AutoTest: fixed a possible call on a Void target. (f1350c0fd72)
* XEBRA: fixed compilation of the projects. (5a2f6a363af)
* XEBRA: fixed compilation of the projects. (5a2f6a363af)
* All ECFs: the <code><nowiki>.svn</nowiki></code> and <code><nowiki>CVS</nowiki></code> exclude rules are replaced by a single <code><nowiki>/\..*$</nowiki></code> rule, which excludes every dot folder. (42235e16964)
* All ECFs: the <code>.svn</code> and <code>CVS</code> exclude rules are replaced by a single <code>/\..*$</code> rule, which excludes every dot folder. (42235e16964)


=== Gobo ===
=== Gobo ===
* Updated to Gobo 26.09: SCOOP wait conditions in <code><nowiki>gec</nowiki></code>, contract and flat-contract views in <code><nowiki>gedoc</nowiki></code>, a <code><nowiki>gelsp</nowiki></code> tooltip fix, VTEC-2 checks, and new gecop tests. (bf1fea813f4) See <code><nowiki>Src/contrib/library/gobo/History.md</nowiki></code>.
* Updated to Gobo 26.09: SCOOP wait conditions in <code>gec</code>, contract and flat-contract views in <code>gedoc</code>, a <code>gelsp</code> tooltip fix, VTEC-2 checks, and new gecop tests. (bf1fea813f4) See <code>Src/contrib/library/gobo/History.md</code>.


=== Eiffel Web CMS (unstable) ===
=== Eiffel Web CMS (unstable) ===
* New <code><nowiki>CMS_HANDLER_ON_ROUTER</nowiki></code>, which keeps routes inside their handler. (eca6d835856)
* New <code>CMS_HANDLER_ON_ROUTER</code>, which keeps routes inside their handler. (eca6d835856)
* Export and import: lists previous exports and can delete, archive or download them (permission-protected). <code><nowiki>CMS_API.zip_to</nowiki></code> and <code><nowiki>unzip_info</nowiki></code>. Fixed the export of user roles. (567315d5347, 62583034fcc, 5e2a79e8963)
* Export and import: lists previous exports and can delete, archive or download them (permission-protected). <code>CMS_API.zip_to</code> and <code>unzip_info</code>. Fixed the export of user roles. (567315d5347, 62583034fcc, 5e2a79e8963)
* Web API for mail handling: individual and grouped mail, with expand or smarty templates. (5dcfff54f87)
* Web API for mail handling: individual and grouped mail, with expand or smarty templates. (5dcfff54f87)
* API key auth: key rotation, JSON payloads (name, scopes), and token expiration dates. (22d596665b8, 76fc363df83)
* API key auth: key rotation, JSON payloads (name, scopes), and token expiration dates. (22d596665b8, 76fc363df83)
* Storage: <code><nowiki>DECIMAL</nowiki></code> and <code><nowiki>DATE</nowiki></code> support, unicode fixes, and the table schema display. (6c8abc48d67, b8942b5b663, ecc7108d59f, 491f3ec2607, 37a3bed5bc8)
* Storage: <code>DECIMAL</code> and <code>DATE</code> support, unicode fixes, and the table schema display. (6c8abc48d67, b8942b5b663, ecc7108d59f, 491f3ec2607, 37a3bed5bc8)
* New hook <code><nowiki>CMS_HOOK_TEMPLATE_VALUE_TABLE_ALTER</nowiki></code>, <code><nowiki>CMS_API.json_value_from_request</nowiki></code>, a partial list with total count, custom values by type, and link targets. (21b9870495b, dd0744a3796, 20395609ed2, 2b11736902d, d08abc3ede5)
* New hook <code>CMS_HOOK_TEMPLATE_VALUE_TABLE_ALTER</code>, <code>CMS_API.json_value_from_request</code>, a partial list with total count, custom values by type, and link targets. (21b9870495b, dd0744a3796, 20395609ed2, 2b11736902d, d08abc3ede5)
* Fixes: absolute URL computation, query handling in URLs, module DB updates using build numbers, and the module configuration file extension. (5f2d95a67a5, fc4b6905570, af9d5448c0e, e82b9b20620)
* Fixes: absolute URL computation, query handling in URLs, module DB updates using build numbers, and the module configuration file extension. (5f2d95a67a5, fc4b6905570, af9d5448c0e, e82b9b20620)
* Smaller improvements to the contact module, <code><nowiki>/register</nowiki></code> redirect, the <code><nowiki>/debug</nowiki></code> page and dates. (6fef236852d, c83847ceb6e, 8b389175968, df999c83f0a, a9dd408a2fb, b1669de9bbb, 250a561c2d8, 620421bed4a, 36a472c8d5e)
* Smaller improvements to the contact module, <code>/register</code> redirect, the <code>/debug</code> page and dates. (6fef236852d, c83847ceb6e, 8b389175968, df999c83f0a, a9dd408a2fb, b1669de9bbb, 250a561c2d8, 620421bed4a, 36a472c8d5e)

Latest revision as of 21:16, 21 October 2026

Below are not the release notes of EiffelStudio. It is the change log of EiffelStudio intermediate releases and the most important changes are highlighted in green or in red (for breaking changes). The release notes of EiffelStudio can be found at the following URL. You can also download the latest revision here. Information about other version can be found under Category:Releases.


Next EiffelStudio Release

Beta download: https://account.eiffel.com/downloads/channel/beta

Stable download: https://account.eiffel.com/downloads/channel/stable

EiffelStudio 26.09 — Changelog

Changes from Eiffel_25.12 to Eiffel_26.09. 197 commits, 2026-01-02 to 2026-10-13.

Commits that were also cherry-picked into Eiffel_25.12 (and so already shipped with 25.12) are left out. These are: the EV_FONT_I.copy_font precondition fix, the GTK buffer overflow fix, the first S3 client version, the first PostgreSQL EiffelStore binding, and the CMS PostgreSQL storage work. Version bumps, CD key updates and the eiffel.com / account.eiffel.com website changes are listed at the end.


Compiler

  • Smarter detection of the common type of a manifest array, so typed manifest arrays ({ARRAY [T]} <<... >>) are needed less often with generic types. (9beecfe9dc7, merge 81cdf3751f5)
    • Fixed a segmentation fault during finalization when the merged type of a manifest array came from tuples (TUPLE_TYPE_A was rebuilt as a plain GEN_TYPE_A). (573d0dd9ec0)
    • Fixed a regression where the fallback type lost attachment and separateness: << a, b >> with detachable elements gave ARRAY [ANY] instead of ARRAY [detachable ANY]. Fixes eweasel exec368 and exec369. (f9e59391d05)
  • Fixed "Current used before initialized" being reported for non-object calls (bug#19974). (699e6cde2a6, d88153ae5da)
  • Added eweasel tests for bugs reported by Eric Bezault (once031/032/034/035/039, valid301/305–308/310). Updated exec153, exec368 and valid148 (now expects VUAR(2)). (5a845baca76, 2731333b1ad, 1f82f939e39)

EiffelStudio (IDE)

New "Find Library" dialog (replaces "Add Library...")

  • New Find Library dialog with search, a results list and a details panel. "Add to project" includes a library in the current target and saves the project configuration. The dialog stays open, and offers to compile the project when it closes. (e560ae90430, feea2d72590)
  • "Find Library..." replaces "Add Library..." in the Tools menu, the context menu and the Groups tool. It is also a button in the project toolbar, after "Project Settings". (3337c137a8c, 51402236ff0)
  • Project Settings also use the Find Library dialog to add libraries to the edited target. (6c7e36de916)
  • Precompiled libraries are supported: a new "precompiled" category, and the dialog can replace the current precompile and offer a full recompile. (41c1bafbd09)
  • Search options: strict and non-strict matching (non-strict, the default, is *text*), a category: criterion, a Category column, and finding Libraries or Classes. (77b811d616f, de33d5daf0a)
  • Configurable categories: only official, contrib and precompiled are built in. The others come from package.iron files and IRON packages, and you choose which ones show as filters. (294b1c7a11c)
  • Details panel: description, void-safety, metadata, links, classes, IRON install/uninstall, and an editable location and name in the project, with validation. (feea2d72590)
  • The layout adapts to narrow windows: drop-down menus replace the button rows, and the panels are in viewports. (650009dcb9c)
  • "Custom" button only in the Add Library dialog, and better formatting of the details. (100d0378bef)
  • New reusable widgets LIBRARY_SEARCH_BOX and LIBRARY_DETAILS_BOX, shared with the Add Library and Add Precompile dialogs. Tests in TEST_LIBRARY_SEARCH_SCORER. (de33d5daf0a, 452c592d907)

Library scanning and IRON

  • Library scanning follows the project section of package.iron. Only the ECF files declared there count as libraries, and the package information applies to each of them. The default library name is <package>_<project>. (1642284e5e8)
  • package.iron files: added the missing project entries, removed the obsolete -safe ECFs from ise_gobo, and added a category field. (0c0a4c2acf5, 392a6405846)
  • ECFs whose library target is extended by an application target (for example, Gobo examples and tests) are no longer listed as libraries. (f7bcf612784)
  • IRON packages manager: you can register and unregister IRON repositories ("Add..." / "Remove"). (88f5fca36a9)
  • The iron tool handles the new category field. (f3b94f6c8e8)
  • Library caches and the class index are versioned and rebuilt automatically. (77b811d616f, f7bcf612784)

SCM tool

  • The status box uses a compact docking toolbar. "Check all" is a toolbar button. The commit button is a dual popup that shows the active changelist and its item count, and its menu can commit, select, create or clear a changelist. Display options moved to a drop-down menu. New SCM_CHANGELIST_NAME_DIALOG. (74ffecbb4f7, 1d88b0643ce)

Other IDE fixes

  • Diagram: the anchor of fixed BON class figures now scales with the zoom. (5acbba5700b)
  • Fixed a GTK 3 crash caused by the same rename menu item being inserted into two context menus. (5acbba5700b)
  • The main window is kept within the work area of the monitor it was last on, not always the primary monitor. (5acbba5700b)
  • Fixed an interface freeze caused by the cloud license dialog. (58a43ff98f7)
  • Better reconnection when the license API server is briefly unavailable. (5507ba80b7a)

Translations

  • Updated the .pot and .po templates with the new Find Library and IRON messages. (75ea515cabd, 95a70cdb098)
  • Filled missing entries: French (2848), Spanish (5802), German, Russian and Chinese (simplified) (79 new entries each). (c3713b8b0ee, b3300eee41e, fdaa423bbfa, 46e9a4464ec, 06a99f52b14)

Platforms and toolchain

  • New platform: macosx-arm64. (cd17f41a317)
  • Added CONFIGS for Windows ARM. (879cd93b2b3)
  • Visual Studio 2026 support in finish_freezing. (c8727317590)
  • Fixed C compilation of libfcgi with GCC 14 and later. (87c5d4b7644)
  • macOS: fixed opening URLs and files. (8745c96d6d5)
  • Linux delivery: the build docker image now uses Ubuntu 24.04. The unix packaging scripts (debian, rpm, flatpak) were updated. (8b3bca2d6a1, 760fde6c727, f845b3f6e5f, 068271e4215, bceee457906, 1f6450e2278)

Libraries

EiffelBase

  • Fixed a possible issue when the argument is an IMMUTABLE_STRING_8 created with make_from_area_and_bounds (contributed by Finnian Reilly). (8d564dd1e5f)

EiffelVision2 (GTK 3)

  • HiDPI and text scaling: GNOME text scaling and gtk-xft-dpi are honored, and fonts update live when desktop settings change. (a01d4de0a48)
  • Fixes for HiDPI, multi-monitor, XWayland and drag and drop. (9688da06601)
  • Pixbuf and Cairo sizes are clamped to 1..32767 to avoid X_CreatePixmap BadValue errors. Fixed the custom cursor hotspot. (a01d4de0a48)
  • Restored UI responsiveness: GDK events are now forwarded through gtk_main_do_event, and button events are routed the GTK 2 way. (a01d4de0a48)
  • No more GLib abort ("No GSettings schemas are installed") when schemas are not on the search path, for example with GTK from MacPorts or Homebrew, or a relocated GTK. This also fixes the "hicolor theme was not found" warning. (df8685f8512)
  • Fixed a dead key followed by space (e.g. " + space) inserting a space instead of the composed character. This also applies to GTK 2. (3d1b68c581c)
  • Fixed a possible blocking behavior caused by modal windows. (5387d0db4f8)
  • Removed GLib-GObject-CRITICAL warnings (g_value_set_boolean). (185a5665df2, d75bf60a2b6)
  • Editor library: fixed void-safe code. (68f19f306e0)

Docking

  • Split positions are now restored correctly when switching layouts (for example, normal and debug mode). (87c09858d15)
  • Tab bar sizing: the tab box no longer forces a minimum width, the hidden-tabs indicator is on the right and visible, and the empty area is cleared and forwards double-click and drop. (87c09858d15)
  • Fixed compilation for GTK 2 and Cocoa. (d2883096360)

EiffelStore

  • MySQL/MariaDB: optional skipping of SSL checks, and support for the client section of ~/.my.cnf. This makes MySQL 8.x caching_sha2_password setups easier. (e4e5e818fd2)
  • MySQL/MariaDB: connect forces TCP, so localhost plus a port works (e.g. docker), and no longer hides the real connection error behind "2006 Server has gone away". (0b92704f644)
  • MySQL: supports a wider range of client library versions. (0b8ea3891f1)
  • MariaDB now works on Unix: ECF, config script and linker flag fixes. (8745bc002f1, f3423c08ae1, 68c20d626d4, 11a0afbf3bb)
  • Better support of the DATE SQL type, and optional DECIMAL support, for MySQL and MariaDB. (252e4bed0e0, 229d0c3575d)
  • Uses UTF_CONVERTER for UTF encoding. (43177b23af1)
  • Updated the EiffelStore metadata. (38f806b51bf)

New libraries (contrib)

  • ePDF — read, write and encrypt PDF documents (ISO 32000-1 / PDF 1.7): parsing (xref streams, object streams, linearized files, lazy loading), full and incremental writing, fonts (standard and TrueType), images and forms, the usual filters, and RC4/AES-128/AES-256 security. (64a882163c1, 71b29da73ab)
  • EiffelTUI — a terminal user interface library inspired by Ratatui: immediate-mode, double-buffered rendering, constraint layouts, styled text, keyboard and mouse events, and many widgets (table, list, tabs, charts, canvas, tree, text input, calendar, popup...). (520df9440fb)
  • Markdown — parser, plus XHTML and AST generators, with documentation. (23c8924440b, 9a9a1b308c8)
  • YAML — parser and writer with timestamp support, helpers for common Eiffel types, and a yaml_json converter tool. (7c0712cc37d, 0209b12bde4, cb708fb0b94, a6bc471eb56, 7aa5049ecea)
  • BSON — parser and writer, a BSON/JSON converter (bsonjson tool), and a new stream library that abstracts parser input (string or file). (a4aee56e92f, b6650375c7e, 1232ccfe3be)
  • Crypto — cryptographically secure pseudorandom number generator (CSPRNG) for Unix and Windows (unstable library). (10e8eef9434, 1667bbd443b)

Other library updates

  • S3 client: CommonPrefixes retrieval (to list "directories"), string type fixes, and packaging updates. (a99a47046e7, 3c85269405f, d24b1c03794, 79e536404fd, 1cc64138921, a400e7a7578)
  • JSON: added JSON_VALUE.is_boolean. (f7b6f456a0d)
  • HTTP protocol: support for the Link: header. (867b551f158)
  • http_client: updated ECFs, new loop syntax, unique UUIDs. (b7b60f04aac, 5b2f9ab0d60, 13640b954eb)
  • EWF/WSF: is_whitespace query on request values. In the router, alias "-" removes a request method. (5c5d0c2d0ff, 593a46f9474)
  • Decimal: make_from_string accepts READABLE_STRING_8, and new DECIMAL_ACCESS. (879d2c754fe)
  • JWT: type declaration cleanup. (5531b7b816d)
  • MongoDB: fixed compilation on Unix, and fixed the books_restapi example. (227997f512c, 6e35ab671d0, 968c79d0225)
  • minizip: fixed C compilation on Unix. (60d5cc77815, 979fabd2607)
  • AutoTest: fixed a possible call on a Void target. (f1350c0fd72)
  • XEBRA: fixed compilation of the projects. (5a2f6a363af)
  • All ECFs: the .svn and CVS exclude rules are replaced by a single /\..*$ rule, which excludes every dot folder. (42235e16964)

Gobo

  • Updated to Gobo 26.09: SCOOP wait conditions in gec, contract and flat-contract views in gedoc, a gelsp tooltip fix, VTEC-2 checks, and new gecop tests. (bf1fea813f4) See Src/contrib/library/gobo/History.md.

Eiffel Web CMS (unstable)

  • New CMS_HANDLER_ON_ROUTER, which keeps routes inside their handler. (eca6d835856)
  • Export and import: lists previous exports and can delete, archive or download them (permission-protected). CMS_API.zip_to and unzip_info. Fixed the export of user roles. (567315d5347, 62583034fcc, 5e2a79e8963)
  • Web API for mail handling: individual and grouped mail, with expand or smarty templates. (5dcfff54f87)
  • API key auth: key rotation, JSON payloads (name, scopes), and token expiration dates. (22d596665b8, 76fc363df83)
  • Storage: DECIMAL and DATE support, unicode fixes, and the table schema display. (6c8abc48d67, b8942b5b663, ecc7108d59f, 491f3ec2607, 37a3bed5bc8)
  • New hook CMS_HOOK_TEMPLATE_VALUE_TABLE_ALTER, CMS_API.json_value_from_request, a partial list with total count, custom values by type, and link targets. (21b9870495b, dd0744a3796, 20395609ed2, 2b11736902d, d08abc3ede5)
  • Fixes: absolute URL computation, query handling in URLs, module DB updates using build numbers, and the module configuration file extension. (5f2d95a67a5, fc4b6905570, af9d5448c0e, e82b9b20620)
  • Smaller improvements to the contact module, /register redirect, the /debug page and dates. (6fef236852d, c83847ceb6e, 8b389175968, df999c83f0a, a9dd408a2fb, b1669de9bbb, 250a561c2d8, 620421bed4a, 36a472c8d5e)