Updated to upcoming 23.09

git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@2393 abb3cda0-5349-4a8f-a601-0c33ac3a8c38
This commit is contained in:
eifops
2023-09-25 09:13:12 +00:00
parent 246745930d
commit e2bb303f94
2975 changed files with 63910 additions and 342 deletions

View File

@@ -1,4 +1,4 @@
[[Property:modification_date|Mon, 02 Sep 2019 08:02:24 GMT]]
[[Property:modification_date|Fri, 14 Apr 2023 08:22:51 GMT]]
[[Property:publication_date|Mon, 02 Sep 2019 08:02:24 GMT]]
[[Property:uuid|7CCF602E-0B79-49C2-93FE-39C90CBE4E35]]
[[Property:link_title|Code Templates]]
@@ -106,6 +106,7 @@ To offer templates as part of code completion, EiffelStudio looks in two locatio
** Windows: <code>C:/Users/your_user_name/Documents/Eiffel User Files/16.11/templates/code</code>
If you define templates for your own specific use, store them in the second location.
The template file should be an Eiffel file (with `e` file extension).
== Defining a targeted template ==
Here is how we defined the template used in the above targeted example:
@@ -147,11 +148,34 @@ This class defines two targeted templates: ''maximum'' for the maximum of an ent
To specify the target type, here arrays, just use it as the actual generic parameters of TEMPLATE (which is a generic class). Here indeed, the the definition starts as
<code>
class ARRAY_TEMPLATE [T -> COMPARABLE] inherit
TEMPLATE [ARRAY [T]]
class ARRAY_TEMPLATE [T -> COMPARABLE]
inherit
TEMPLATE [ARRAY [T]]
</code>
Another example, without generic parameters:
<code>
class STRING_UTF_8_TEMPLATE [T -> READABLE_STRING_GENERAL]
inherit
TEMPLATE [T]
feature -- Templates
to_utf_8: STRING_8
-- STRING_8 string from `target'.
note
title: "To UTF-8 STRING"
tags: "Unicode, String, STRING"
do{UTF_CONVERTER}.utf_32_string_to_utf_8_string_8 (target)end
end
</code>
(note: in that example, there is no space after the `do` and before the `end`, so the template is applied without adding extra unwanted spaces)
== Integration within EiffelStudio ==
The correspondence between what you write in the template definition and what appears in EiffelStudio, as shown in previous sections, is straightforward:
@@ -162,7 +186,6 @@ The correspondence between what you write in the template definition and what ap
== Defining a targetless template ==
For a targetless template, just just use TEMPLATE without a generic parameter:
<code>

View File

@@ -0,0 +1,59 @@
[[Property:modification_date|Mon, 09 Jan 2023 13:42:55 GMT]]
[[Property:publication_date|Wed, 04 Jan 2023 11:34:24 GMT]]
[[Property:uuid|9545048C-03AF-4F8C-BE54-0DD7B7C31CF2]]
[[Property:weight|0]]
[[Property:title|Release notes for EiffelStudio 22.12 - macosx]]
[[Property:link_title|22.12 - macosx]]
= Known GUI issues =
Vision2 UI apps have bad issue on macosx M1/M2 (arm architecture) with XQuartz.
== Use the latest XQuartz version ===
Be sure to use the latest XQuartz, as it gets improvement from time to time (currently version 2.8.4), and hopefully remaining EiffelStudio UI annoyance will disappear with future versions.
== Do not disable X11 rendering ===
In other words, be sure to use the following default XQuartz setting:
```
defaults write org.xquartz.X11 enable_render_extension 1
```
Otherwise, if `enable_render_extension = 0`, text fields (and similar) will not work properly for EiffelStudio and any Vision2 application (and could even crash the application), in addition it degrades GUI application performance.
== Black background annoyance ==
When using default setting (`enable_render_extension = 1`), EiffelStudio has '''back blackground''' for a few widgets (menu, label, ...), especially when EiffelStudio has the focus, which makes it hard to use.
EiffelStudio is not the only macosx application having this bad issue with XQuartz (matlab, git gui, ...), and so far no workaround works well with EiffelStudio.
Let us hope that XQuartz fixes this issue in a future version update.
Note: there is no such issue when using the interface via a remote application such as NoMachine.
===A dirty but acceptable workaround: CSS ===
Using `~/.config/gtk-3.0/gtk.css` to use colors that would make EiffelStudio reading in "normal" mode, and in "black background annoyance" mode.
For that, put the following text inside `~/.config/gtk-3.0/gtk.css`
```css
.background { background-color: #cccccc; color: white }
widget, box, text, label { background-color: #cccccc; color: white }
.titlebar { background-color: #ff0000 }
window, menuitem { background-color: #cccccc; color: white }
menuitem:hover { background-color: white; color: #cccccc }
```
= C code consideration =
On macosx, ```clang``` is the default C compiler.
A few clang compiler optimizations were causing issues for Eiffel project, and the ARM architecture is less human friendly as x86.
As a consequence, the Eiffel generated C code was modified to avoid compilation optimization to be applied wrongly.
It was also the opportunity to improve part of the C code (mostly in the Eiffel runtime), to avoid ambiguous case between various C compilers (MS cl, GCC, CLANG, ...).
== As a quick summary:==
- if you write C code with Eiffel (i.e external C feature), be aware that clang may move local variable to registers as an optimization, so the C code compares the result of 2 C functions that may call the Eiffel GC (i.e manipulating Eiffel object), it is safer to store the result of the C functions in local C variables, and then compare the local variables.
- When using C function pointer (declared with a typedef with `...` as last argument), the caller code should always use adapted ```function cast``` that declares all arguments, otherwise clang may consider the C function signature uses ```va_args``` (but this is not always the case), and the argument values will not be pushed to the stack as expected.

View File

@@ -0,0 +1,26 @@
[[Property:modification_date|Wed, 04 Jan 2023 11:33:21 GMT]]
[[Property:publication_date|Thu, 22 Dec 2022 13:40:15 GMT]]
[[Property:uuid|EA73C2B4-1A89-4A2A-A53F-2E5617B140BA]]
[[Property:title|Release notes for EiffelStudio 22.12]]
[[Property:link_title|22.12]]
[[Property:weight|-8]]
==Graphical environment==
* Added code completion support for once classes
* Improved the '''Add Library''' implementation by allowing to add "redirection" ecf files, and fixed the '''Add Cluster''' functionalities in recursive cluster.
* Fixed an harmless exception when first inserting Unicode symbol using the "Insert Symbol" dialog on Windows.
==Compiler==
* New platforms: macosx-armv6 (M1, M2 support) and linux-arm64.
* Reviewed and updated generated C code to fix potential execution issues due to "clang" C compiler optimizations (especially on ARM architecture).
* Fixed the compilation of once class without any creation procedures.
==Tools==
* It is now possible to use the "emdc.exe" .Net md consumer, as an alternative to the COM md consumer from EiffelStudio, as a first step toward supporting .Net on non Windows platform.
== Warning ==
For Macos users on M1/M2 (arm) architecture, please read the specific note [[Release notes for EiffelStudio 22.12 - macosx]]
----
See [https://dev.eiffel.com/EiffelStudio_22.12_Releases change log] for more details.