Difference between revisions of "EiffelStudio 21.11 Releases"
(49 intermediate revisions by 2 users not shown) | |||
Line 3: | Line 3: | ||
__NOTOC__ | __NOTOC__ | ||
− | = EiffelStudio 21.11. | + | = EiffelStudio 21.11.10.6046 Releases= |
Beta download: https://ftp.eiffel.com/pub/beta/ | Beta download: https://ftp.eiffel.com/pub/beta/ | ||
− | == 21.11. | + | == 21.11.10.6046 (November 2021) == |
===New features=== | ===New features=== | ||
− | * | + | * compiler: Supported a unified syntax to access loop cursor features inside an iteration form of a loop for both keyword-based and Unicode-based loop variants. The current item is accessed by the cursor name. The cursor feature is accessed by preceding the cursor name with the symbol <e>@</e>. For example: |
+ | <e> | ||
+ | ∀ x: array ¦ (@ x.target_index \\ 2 = 0 ⇒ x > 0) -- All elements at even positions are positive. | ||
+ | |||
+ | -- Print all elements of a table prefixed with their keys. | ||
+ | across table as y loop | ||
+ | print (@ y.key) | ||
+ | print (": ") | ||
+ | print (y) | ||
+ | io.put_new_line | ||
+ | end | ||
+ | </e> | ||
+ | :The existing code can be updated with <code>syntax_updater</code> invoked with option <code>-i</code>. | ||
+ | * library (base): Marked <e>make_from_iterable</e> as a conversion procedure from <e>ARRAY</e> for some container classes to enable initialization of the corresponding entities from manifest arrays of elements by reattachment. This enables writing | ||
+ | <e> | ||
+ | x: LINKED_LIST [INTEGER] | ||
+ | ... | ||
+ | x := <<1, 1, 2, 3, 5, 8>> -- Create a list with elements 1, 1, 2, 3, 5, 8. | ||
+ | </e> | ||
+ | * library (base): Added <e>{HASH_TABLE}.make_from_iterable_tuples</e> as a creation and conversion procedure from <e>ARRAY</e> to enable initialization from manifest arrays of tuples, for example: | ||
+ | <e> | ||
+ | y: HASH_TABLE [INTEGER, STRING] | ||
+ | ... | ||
+ | y := <<[23, "Peter"], [19, "Mary"], [36, "Tom"], [32, "Alice"]>> -- Indexed by person name. | ||
+ | </e> | ||
+ | * EiffelStudio: Added a source control management tool, supporting basic usage of Subversion and Git commands. | ||
===Improvements=== | ===Improvements=== | ||
− | * | + | * EiffelStudio: Supported completion for Unicode operators defined in standard classes. |
+ | * EiffelStudio: Added scripts (for Unixes) to open an external editor, to open a URL, and to open a terminal. | ||
+ | * EiffelStudio: Migrated to GTK3 on non-Windows platforms (Linux, macOS, etc.). | ||
+ | * EiffelStudio: Used user-controlled editor font in several tools. | ||
+ | * compiler: Extended the error report <code>VWOE</code> about using an operator with an operand of an unexpected type with the operator name and the associated feature name. | ||
+ | * compiler (pretty-printer): Taken any (Unicode) white-space characters into account when pretty-printing, not just a space character and a horizontal tabulation. | ||
+ | * compiler (pretty-printer): test#pretty015, test#pretty028 — Added a preference to control pretty printing of unindented comments (often used for commenting out code). Such comments can keep the (absent) indentation (the default) or be indented using the general rules. | ||
+ | * compiler (code analyzer): Disabled detection of the phrase "to do" unless it is written in capitals and without spaces, and enabled detection of "FIXME" in the comments. | ||
+ | * compiler (pretty-printer): Harmonized indentation for identifier lists, tagged note entries, export clauses, feature signatures, multi-line lists in parentheses, mandatory check instructions, agents, delayed operands, components of a loop expression, manifest arrays, actual arguments, nested feature calls. | ||
+ | * compiler: Used the same indentation for assertion subclauses with and without tags in flat forms and pretty-printer output. | ||
+ | * library (base): Added features <e>set</e>, <e>clear</e>, <e>set_all</e> and optimized features <e>item</e> and <e>put</e> in <e>PACKED_BOOLEANS</e>. | ||
+ | * tool: Ensured that <code>po_generation_tool</code> returns a non-zero error code if processing triggers any errors. | ||
===Bug fixes=== | ===Bug fixes=== | ||
+ | * compiler: test#once029 — Taken into account predefined once keys specified for once creation procedures in SCOOP mode. In particular, the key <code>PROCESS</code> guarantees that a most one object can be created for the whole system. | ||
+ | * compiler: Fixed multiple bugs related to non-conforming inheritance, making the latter usable in production code: | ||
+ | ** test#noncon006 — inheritance from a frozen class triggers an error only when the corresponding parent is conforming; | ||
+ | ** bug#13556 (test#noncon007) — an explicit conforming inheritance path is not necessary; | ||
+ | ** bug#14381 (test#noncon010), bug#17619 (test#valid272) — selection of a replicated feature follows the conforming case; | ||
+ | ** bug#17300 (test#incr408) — incremental changes to feature assertions should be handled like in the conforming case; | ||
+ | ** bug#17315 (test#once020) — once-per-object features should be handled like in the conforming case; | ||
+ | ** bug#18021 (test#noncon024) — dead code removal should keep features of non-conforming parents if necessary; | ||
+ | ** test#noncon026 — non-conforming inheritance enables any changes to feature export status. | ||
+ | * compiler: Fixed a bug that may lead to showing wrong source code context when reported issues are associated with different files. | ||
+ | * compiler: Fixed a bug that in rare cases could lead to a crash or incorrect binaries when generating code for .NET. | ||
+ | * compiler: Fixed a bug that caused incorrect .NET code generation for a non-object call on an expanded base class. | ||
+ | * compiler: Corrected code generation for <e>CHARACTER_32.is_space</e> to use properties defined by the Unicode standard. | ||
+ | * compiler: bug#15451 (test#attach055) — Fixed a bug that caused the compiler to report a non-existent <code>VEVI</code> error for the feature <e>default</e> when a reference class inherits from an expanded one. | ||
+ | * compiler (code analyzer): test#codeanalysis033 — Avoided false positives for unreachable code after a conditional instruction when only one branch of the instruction makes the successive code unreachable. | ||
+ | * compiler (pretty-printer): Corrected output for once manifest strings. | ||
+ | * compiler: test#attach131 — Fixed a bug in evaluation of the attachment status of an argument of a separate instruction. | ||
+ | * compiler: Prevented using inline local variables (iteration cursors, locals of separate instructions, object test locals) in old expressions. | ||
+ | * compiler: test#syntax076 — Removed a restriction on using forward and back-slashes for user-defined operators (the following restrictions still apply: <e>\\</e>, <e>/</e>, <e>//</e> can only be used as binary operators). | ||
===Feature removed=== | ===Feature removed=== | ||
===User changes=== | ===User changes=== | ||
− | * compiler: Added a validity check that the type of an inspect expression is attached when compiled in void-safe mode | + | * compiler: Changed the semantics of non-conforming inheritance by removing automatic replication of inherited features. |
− | * | + | * library (base): Replaced conforming inheritance with non-conforming one where possible and appropriate. |
+ | * compiler: test#lib050 — Ensured that the behavior of <e>CHARACTER_8_REF.is_space</e> and <e>CHARACTER_8.is_space</e> does not depend on the current locale. | ||
+ | * compiler: test#attach130 — Added a validity check that the type of an inspect expression is attached when compiled in void-safe mode. | ||
+ | * compiler: Changed the defaults for the iteration loop syntax in newly created projects to access the current item by the cursor name. | ||
+ | * compiler: Changed to report an iteration form of a loop with keyword <e>is</e> as obsolete. The contemporary syntax is to use the loop with keyword <e>as</e> and symbol <e>@</e> to access cursor features. | ||
+ | * compiler: Changed to report a user-defined operator <e>@</e> as obsolete (in many cases, the bracket operator replaces it). | ||
===Developer changes=== | ===Developer changes=== | ||
− | * library(json): Added | + | * library (json): Added a date time serializer. |
− | * library(json): | + | * library (json): Added the possibility to use the reflector serializer with <e>JSON_BASIC_SERIALIZATION</e>. |
− | * library(vision2): | + | * library (vision2): Updated the checkbox drawing, and added a new <e>is_indeterminate</e> state. |
− | * library(EiffelWeb): Fixed WSF_REQUEST when searching for table item with name such as tb[k1][k2]. | + | * library (EiffelWeb): Fixed <e>WSF_REQUEST</e> when searching for a table item with the name such as <code>tb[k1][k2]</code>. |
− | * library(cms): Improved the administration part, and followed recommendation for email sending. | + | * library (cms): Improved the administration part, and followed recommendation for email sending. |
+ | * library (vision2): Switched to GTK3 on non-Windows platforms (to use GTK2, set the project variable <code>vision_implementation</code> to <code>gtk2</code>). |
Latest revision as of 23:01, 21 April 2022
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.
EiffelStudio 21.11.10.6046 Releases
Beta download: https://ftp.eiffel.com/pub/beta/
21.11.10.6046 (November 2021)
New features
- compiler: Supported a unified syntax to access loop cursor features inside an iteration form of a loop for both keyword-based and Unicode-based loop variants. The current item is accessed by the cursor name. The cursor feature is accessed by preceding the cursor name with the symbol
@
. For example:
∀ x: array ¦ (@ x.target_index \\ 2 = 0 ⇒ x > 0) -- All elements at even positions are positive. -- Print all elements of a table prefixed with their keys. across table as y loop print (@ y.key) print (": ") print (y) io.put_new_line end
- The existing code can be updated with
syntax_updater
invoked with option-i
.
- library (base): Marked
make_from_iterable
as a conversion procedure fromARRAY
for some container classes to enable initialization of the corresponding entities from manifest arrays of elements by reattachment. This enables writing
x: LINKED_LIST [INTEGER] ... x := <<1, 1, 2, 3, 5, 8>> -- Create a list with elements 1, 1, 2, 3, 5, 8.
- library (base): Added
{HASH_TABLE}.make_from_iterable_tuples
as a creation and conversion procedure fromARRAY
to enable initialization from manifest arrays of tuples, for example:
y: HASH_TABLE [INTEGER, STRING] ... y := <<[23, "Peter"], [19, "Mary"], [36, "Tom"], [32, "Alice"]>> -- Indexed by person name.
- EiffelStudio: Added a source control management tool, supporting basic usage of Subversion and Git commands.
Improvements
- EiffelStudio: Supported completion for Unicode operators defined in standard classes.
- EiffelStudio: Added scripts (for Unixes) to open an external editor, to open a URL, and to open a terminal.
- EiffelStudio: Migrated to GTK3 on non-Windows platforms (Linux, macOS, etc.).
- EiffelStudio: Used user-controlled editor font in several tools.
- compiler: Extended the error report
VWOE
about using an operator with an operand of an unexpected type with the operator name and the associated feature name. - compiler (pretty-printer): Taken any (Unicode) white-space characters into account when pretty-printing, not just a space character and a horizontal tabulation.
- compiler (pretty-printer): test#pretty015, test#pretty028 — Added a preference to control pretty printing of unindented comments (often used for commenting out code). Such comments can keep the (absent) indentation (the default) or be indented using the general rules.
- compiler (code analyzer): Disabled detection of the phrase "to do" unless it is written in capitals and without spaces, and enabled detection of "FIXME" in the comments.
- compiler (pretty-printer): Harmonized indentation for identifier lists, tagged note entries, export clauses, feature signatures, multi-line lists in parentheses, mandatory check instructions, agents, delayed operands, components of a loop expression, manifest arrays, actual arguments, nested feature calls.
- compiler: Used the same indentation for assertion subclauses with and without tags in flat forms and pretty-printer output.
- library (base): Added features
set
,clear
,set_all
and optimized featuresitem
andput
inPACKED_BOOLEANS
. - tool: Ensured that
po_generation_tool
returns a non-zero error code if processing triggers any errors.
Bug fixes
- compiler: test#once029 — Taken into account predefined once keys specified for once creation procedures in SCOOP mode. In particular, the key
PROCESS
guarantees that a most one object can be created for the whole system. - compiler: Fixed multiple bugs related to non-conforming inheritance, making the latter usable in production code:
- test#noncon006 — inheritance from a frozen class triggers an error only when the corresponding parent is conforming;
- bug#13556 (test#noncon007) — an explicit conforming inheritance path is not necessary;
- bug#14381 (test#noncon010), bug#17619 (test#valid272) — selection of a replicated feature follows the conforming case;
- bug#17300 (test#incr408) — incremental changes to feature assertions should be handled like in the conforming case;
- bug#17315 (test#once020) — once-per-object features should be handled like in the conforming case;
- bug#18021 (test#noncon024) — dead code removal should keep features of non-conforming parents if necessary;
- test#noncon026 — non-conforming inheritance enables any changes to feature export status.
- compiler: Fixed a bug that may lead to showing wrong source code context when reported issues are associated with different files.
- compiler: Fixed a bug that in rare cases could lead to a crash or incorrect binaries when generating code for .NET.
- compiler: Fixed a bug that caused incorrect .NET code generation for a non-object call on an expanded base class.
- compiler: Corrected code generation for
CHARACTER_32.is_space
to use properties defined by the Unicode standard. - compiler: bug#15451 (test#attach055) — Fixed a bug that caused the compiler to report a non-existent
VEVI
error for the featuredefault
when a reference class inherits from an expanded one. - compiler (code analyzer): test#codeanalysis033 — Avoided false positives for unreachable code after a conditional instruction when only one branch of the instruction makes the successive code unreachable.
- compiler (pretty-printer): Corrected output for once manifest strings.
- compiler: test#attach131 — Fixed a bug in evaluation of the attachment status of an argument of a separate instruction.
- compiler: Prevented using inline local variables (iteration cursors, locals of separate instructions, object test locals) in old expressions.
- compiler: test#syntax076 — Removed a restriction on using forward and back-slashes for user-defined operators (the following restrictions still apply:
\\
,/
,//
can only be used as binary operators).
Feature removed
User changes
- compiler: Changed the semantics of non-conforming inheritance by removing automatic replication of inherited features.
- library (base): Replaced conforming inheritance with non-conforming one where possible and appropriate.
- compiler: test#lib050 — Ensured that the behavior of
CHARACTER_8_REF.is_space
andCHARACTER_8.is_space
does not depend on the current locale. - compiler: test#attach130 — Added a validity check that the type of an inspect expression is attached when compiled in void-safe mode.
- compiler: Changed the defaults for the iteration loop syntax in newly created projects to access the current item by the cursor name.
- compiler: Changed to report an iteration form of a loop with keyword
is
as obsolete. The contemporary syntax is to use the loop with keywordas
and symbol@
to access cursor features. - compiler: Changed to report a user-defined operator
@
as obsolete (in many cases, the bracket operator replaces it).
Developer changes
- library (json): Added a date time serializer.
- library (json): Added the possibility to use the reflector serializer with
JSON_BASIC_SERIALIZATION
. - library (vision2): Updated the checkbox drawing, and added a new
is_indeterminate
state. - library (EiffelWeb): Fixed
WSF_REQUEST
when searching for a table item with the name such astb[k1][k2]
. - library (cms): Improved the administration part, and followed recommendation for email sending.
- library (vision2): Switched to GTK3 on non-Windows platforms (to use GTK2, set the project variable
vision_implementation
togtk2
).