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|Tue, 14 Sep 2021 19:26:17 GMT]]
[[Property:modification_date|Mon, 23 Jan 2023 09:22:48 GMT]]
[[Property:publication_date|Tue, 21 Aug 2018 18:55:21 GMT]]
[[Property:title|Customizing the tools layout and toolbars]]
[[Property:weight|-8]]
@@ -119,7 +119,7 @@ There are two tools panes. Docked in one are the Class, Feature, Outputs, and Er
It turns out that there are actually two more tools panes in this layout. One contains the Diagrams tool and the other contains the Dependency, Metrics, and Info tools. These two panes are Auto Hidden so we only see the minimum evidence that they exist ... just their tabs. You can tell that these are two different panes by how the tabs are distributed. Diagram is somewhat "off by itself" whereas Dependency, Metrics and Info are grouped closely together.
As we learned in [[Viewing Classes]] you can make one of these tool panes visible by moving your cursor over it, or clicking on one its tabs. The pane will expose itself for the length of time that the cursor remains over it, then recede into hiding again when the cursor is moved away.
As we learned in [[Viewing Classes]] you can make one of these tool panes visible by moving your cursor over it, or clicking on one of its tabs. The pane will expose itself for the length of time that the cursor remains over it, then recede into hiding again when the cursor is moved away.
Try this now with the Diagram tool. The pane housing the diagram tool appears from the bottom of the screen. Notice also that it has occluded the pane containing Class, Feature, Outputs, and Error List tools, and about half of the pane containing the Groups, Features, AutoTest, and Favorites tools.
@@ -151,9 +151,9 @@ So move your cursor over the Diagram tab and the pane should expand (if it does
Figure 6
You may notice that a pane that is auto hidden may, when it expands, occlude other panes. However, when you turn of Auto Hide by pinning the pane open, any panes that it had occluded will become at least minimally visible. In the case of this example, the pane containing the Class tool was temporarily covered by the expanded Diagram pane, as was the row of tabs on the pane containing Groups. When you pin the Diagram pane open, the title bar for the pane with the Class tool becomes visible, and the pane with the Groups tool gets shortened to fit above the Diagram tool's pane.
You may notice that a pane that is auto hidden may, when it expands, occlude other panes. However, when you turn off Auto Hide by pinning the pane open, any panes that it had occluded will become at least minimally visible. In the case of this example, the pane containing the Class tool was temporarily covered by the expanded Diagram pane, as was the row of tabs on the pane containing Groups. When you pin the Diagram pane open, the title bar for the pane with the Class tool becomes visible, and the pane with the Groups tool gets shortened to fit above the Diagram tool's pane.
It is at this point that new EiffelStudio sometimes have problems understanding what's happening. So read the following description of what's going on before you actually try to move the pane ... and don't forget that you can always reset the tools layout if things don't go the way you intended.
It is at this point that new EiffelStudio users sometimes have problems understanding what's happening. So read the following description of what's going on before you actually try to move the pane ... and don't forget that you can always reset the tools layout if things don't go the way you intended.
Now that we've turned off Auto Hide for Diagram's pane, we can move the pane and either re-dock it somewhere else in the development window or, as is our intention, "float" it as a window separate from the Development Window.

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.

View File

@@ -1,4 +1,4 @@
[[Property:modification_date|Wed, 06 Apr 2022 14:21:15 GMT]]
[[Property:modification_date|Fri, 27 Jan 2023 19:53:59 GMT]]
[[Property:publication_date|Sat, 11 Dec 2021 21:57:25 GMT]]
[[Property:title|Mac OS X]]
[[Property:weight|5]]
@@ -8,7 +8,7 @@
{| class="doctable"
|-
| '''Computer/Processor'''
| x86-64
| x86-64 or ARM
|-
| '''Operating System'''
| Mac OS X 10.12 or above
@@ -23,7 +23,7 @@
| 1GB of free space
|-
| '''ISE_PLATFORM'''
| '''macosx-x86''' for x86 based CPU and '''macosx-x86-64''' for x64 based CPU.
| '''macosx-x86''' for x86 based CPU, '''macosx-x86-64''' for x64 based CPU and '''macosx-armv6''' for ARM based CPU.
|}
@@ -64,7 +64,7 @@ This will install EiffelStudio files into `/usr/local/Eiffel_X.Y` . Once this is
== Setting up EiffelStudio ==
Once the files have been installed, you should define the following environment variables in order to run EiffelStudio:
* ISE_EIFFEL to `/usr/local/Eiffel_X.Y`
* ISE_PLATFORM to `macosx-x86` for the 32 bits version or `macosx-x86-64` for the 64 bits version. We will be using `macosx-x86-64` in the examples below.
* ISE_PLATFORM to `macosx-x86` for the 32 bits version or `macosx-x86-64` for the 64 bits version or `macosx-armv6` for the ARM version. We will be using `macosx-x86-64` in the examples below.
and add `$ISE_EIFFEL/studio/spec/$ISE_PLATFORM/bin` to your PATH environment variable.
Using sh or bash as a shell, it suffices to type the following commands: