Difference between revisions of "EiffelStudio 18.11 Releases"
m (→User changes: Added notes about changing HASH_TABLE.valid_key.) |
m (→Bug fixes: Added a note about fixing bug#19501.) |
||
(35 intermediate revisions by 3 users not shown) | |||
Line 5: | Line 5: | ||
Beta download: https://ftp.eiffel.com/pub/beta/18.11/ | Beta download: https://ftp.eiffel.com/pub/beta/18.11/ | ||
− | ==18.11. | + | ==18.11.10.2592 (December 17th 2018)== |
===New features=== | ===New features=== | ||
Line 11: | Line 11: | ||
*compiler: Used assertion expressions as assertion tags when the tags are absent to improve diagnostics of assertion violations. For example, an untagged assertion with an expression <e>is_valid</e> is considered as having a tag <code>is_valid</code>. | *compiler: Used assertion expressions as assertion tags when the tags are absent to improve diagnostics of assertion violations. For example, an untagged assertion with an expression <e>is_valid</e> is considered as having a tag <code>is_valid</code>. | ||
*library (base): Added to <e>HASH_TABLE</e> a feature <e>definite_item</e> that always returns an existing element assuming that the key is in the table (the feature has the corresponding precondition). | *library (base): Added to <e>HASH_TABLE</e> a feature <e>definite_item</e> that always returns an existing element assuming that the key is in the table (the feature has the corresponding precondition). | ||
+ | *compiler: Supported conditions based on current void safety compilation mode. | ||
+ | *EiffelStudio: Added Export/Imports functionality of editor tabs as text (available in the hidden menu>Service>Import/Export tabs... , Ctrl+Alt+D). | ||
+ | *library (jwt): Added a new JWT extension libary implemented with openssl to support the JWT algorithms RS256, RS384, and RS512. | ||
+ | *example (scoop): Added an example <code lang="text">processor_pool</code> to demonstrate how a pool of active processors can be used to execute tasks from passive regions. | ||
+ | *library (base): Added creation procedures <e>make_from_iterable</e> to the classes that exposed a feature <e>duplicate</e> (except for tree classes). | ||
+ | *library (vision): Added a feature <e>{EV_DRAWABLE}.set_anti_aliasing</e> to control whether anti-aliasing should be used when drawing. | ||
+ | *library (OpenSSL): Updated OpenSSL library with asymmetric algorithms (RSA). Added a new RSA API <e>SSL_RSA</e> with features to sign and verify with differents SHA algorithms (256, 384 and 512). Added classes to create keypairs <e>SSL_KEY_PAIR</e> using PEM and PCKS#1 format. | ||
===Improvements=== | ===Improvements=== | ||
Line 19: | Line 26: | ||
*library (base): Added a new class <e>EMPTY_ITERATION_CURSOR</e> that can be used to implement iteration cursors for structures without any elements. | *library (base): Added a new class <e>EMPTY_ITERATION_CURSOR</e> that can be used to implement iteration cursors for structures without any elements. | ||
*library (base): Added an inheritance link from <e>CONTAINER</e> to <e>ITERABLE</e>, so that all containers can be iterated over using an across loop. Most notable additions are queues, trees and files. {{Red|Potential incompatibility: a descendant of a deferred container class of the library may need to implement a feature <e>new_cursor</e>.}} | *library (base): Added an inheritance link from <e>CONTAINER</e> to <e>ITERABLE</e>, so that all containers can be iterated over using an across loop. Most notable additions are queues, trees and files. {{Red|Potential incompatibility: a descendant of a deferred container class of the library may need to implement a feature <e>new_cursor</e>.}} | ||
− | *library (base): | + | *library (base): Changed signatures of all features of <e>HASH_TABLE</e> that accepted <e>detachable G</e> in the arguments to take <e>G</e> instead. |
+ | *library (cms): Improved security (protection against XSS, finer permissions especially related to authentication). Added new <e>SECURITY_HTML_CONTENT_FILTER</e> content filter. | ||
+ | *library (json): Improved performance of the JSON parser (by 40% on large regular files). | ||
+ | *EiffelStudio: Added an entry ''Compile from scratch'' to ''Project'' menu to do a clean compilation instead of incremental recompilation (not needed in general, except for rare cases when the compiler encounters an internal error due to significant changes to the class structure, or a sequence of recompilations with intermediate compilation errors). | ||
+ | *EiffelStudio: Added the description note content of class in the class tool (can be enabled/disabled by a toolbar button). | ||
+ | *EiffelStudio: Changed completion pop-up to show the associated target class (if any) before the list of choices. | ||
+ | *library (cms): Improved administration for OAuth authentication. | ||
+ | *library (jwt): Supported registration of a custom <e>JWT_ALG</e> object that implements JWT signing algorithm (in addition to the provided algorithms <code lang="text">HS256</code> and <code lang="text">NONE</code>) and added an extension library with OpenSSL-based algorithms <code lang="text">RS256</code>, <code lang="text">RS384</code>, <code lang="text">RS512</code>. | ||
+ | *library (eiffelweb): Adopted nanoseconds timeout precision for EiffelWeb settings (in .ini file, use <code lang="text">ns</code>, <code lang="text">us</code>, <code lang="text">ms</code>, or <code lang="text">s</code> to specify measurement units). | ||
+ | *library (json): Added a basic deserialization component to translate JSON content into Eiffel objects of classes <e>ARRAYED_LIST</e>, <e>STRING_TABLE</e> and others. | ||
+ | *library (json): Added a feature <e>JSON_VALUE.chained_item (a_key): JSON_VALUE</e> to be able to do chained calls like <e>json @ "person" @ "address" @ "city"</e> and to get an associated JSON value (if any) or <e>JSON_NULL</e>. | ||
+ | *library (EiffelStore ODBC): Implemented a feature <e>ODBC.affected_row_count</e>. | ||
+ | *library (openssl): Updated OpenSSL library to version 1.1.1a. | ||
+ | *compiler(debugger): Taken into account assertions breakpoints, even if assertions are discarded in final mode, to make sure the exception trace uses the same stop point numbers in both final and workbench mode. | ||
+ | *EiffelStudio (debugger): Added notification to the call stack whether the call is a regular one or a non-object one. | ||
+ | *library (openssl): Updated OpenSSL Asymetric Crypto algorithm with RSA API with new features to sign using different SHA algorithms (256, 384 and 512) and RSA Digest Verification with different algorithms (256, 384, 512). | ||
+ | *EiffelStudio (error list): Added online help for <code lang="text">VWMA(1)</code> warning that can be opened the same way as a built-in error/warning explanation. | ||
+ | *library (uuid): Marked <e>{UUID}.is_valid_uuid</e> as a class feature. | ||
+ | *EiffelStudio (diagram tool): Used anti-aliasing when drawing (can be disabled via ''Preferences''). | ||
+ | *EiffelStudio: Made sure changes to ''Preferences'' of a diagram tool are immediately reflected in the diagram. | ||
===Bug fixes=== | ===Bug fixes=== | ||
*code analyzer: test#codeanalysis031 — Fixed a bug when a previously assigned variable was reported as unread (''CA020'') when it was both a target of a creation instruction and an argument to the corresponding creation procedure. | *code analyzer: test#codeanalysis031 — Fixed a bug when a previously assigned variable was reported as unread (''CA020'') when it was both a target of a creation instruction and an argument to the corresponding creation procedure. | ||
+ | *code_analyzer: bug#19295 (test#codeanalysis032) — Avoided a false positive for ''CA020'' (a local variable is not read after assignment) when the source of an assignment is detachable and cannot be used as a target of a call to <e>do_nothing</e>. | ||
*compiler: bug#19449 (test#final120, test#final126, test#runtime001) — Fixed a C code generation bug that could lead to wrong results of an equality test for references in particular cases in finalized mode when the right-hand side expression triggers GC. | *compiler: bug#19449 (test#final120, test#final126, test#runtime001) — Fixed a C code generation bug that could lead to wrong results of an equality test for references in particular cases in finalized mode when the right-hand side expression triggers GC. | ||
*runtime: bug#19242 (test#runtime022, test#runtime023) - Fixed a bug that could lead to object heap corruption when an argument or a local of an expanded type with (recursively nested) reference attributes is passed to a feature that triggers GC. | *runtime: bug#19242 (test#runtime022, test#runtime023) - Fixed a bug that could lead to object heap corruption when an argument or a local of an expanded type with (recursively nested) reference attributes is passed to a feature that triggers GC. | ||
Line 35: | Line 62: | ||
*compiler: Avoided assertion violation when a file cannot be signed because .NET 3.5 or earlier is not installed on the development machine. | *compiler: Avoided assertion violation when a file cannot be signed because .NET 3.5 or earlier is not installed on the development machine. | ||
*compiler: Fixed a bug that could lead to using a wrong routine ID of a parenthesis alias if this routine ID changes during incremental recompilation. | *compiler: Fixed a bug that could lead to using a wrong routine ID of a parenthesis alias if this routine ID changes during incremental recompilation. | ||
+ | *compiler: bug#15286 (test#ccomp082), bug#17089 (test#exec332), bug#19490 (test#ccomp091) — Fixed bugs that could cause generation of invalid C code or reporting a wrong result for an object test when both source expression type and target type are expanded and incompatible. | ||
+ | *compiler: Removed unneeded escaping of characters inside the content of an XML element in project (<code lang="text">.ecf</code>) files. | ||
+ | *library (json): Ensured the <e>JSON_STRING.item</e> is really UTF-8 encoded (even for characters between 128 and 255). | ||
+ | *tool (iron): Added detection of invalid repositories to the iron command line client that can now report and remove them. | ||
+ | *library (svn): Added support for multi-line comments in commit operations. | ||
+ | *compiler: bug#19456 — Fixed bugs in handling a remote target (especially when the remote target project has no associated UUID). | ||
+ | *EiffelStudio (refactoring): Made sure editor position is restored after completing a refactoring. | ||
+ | *EiffelStudio (debugger): Removed <e>Current</e> from the object view tool for a class feature. | ||
+ | *compiler: bug#19471 — Fixed a bug caused replacement of undefined variables by empty strings when evaluating redirection location instead of keeping the variables as is. | ||
+ | *EiffelStudio (wizard): Fixed a default location for EiffelWeb projects used by EiffelWeb wizard. | ||
+ | *library (cms): Fixed the implementation of the session expiration date, by properly setting the cookie header values <code lang="text">Max-Age</code> and <code lang="text">Expires</code>. | ||
+ | *compiler: Supported <code lang="text">-config_option concurrency:value</code> and <code lang="text">-config_option void_safety:value</code> command-line options to override concurrency and void safety settings when compiling a project. | ||
+ | *library (eiffelweb): Fixed initialization of <e>socket.timeout</e> in the standalone connector of <code lang="text">httpd</code> and web-socket that was not set before. | ||
+ | *EiffelBuilder: bug#19470 — Fixed a bug that caused EiffelBuilder on Linux to overwrite EiffelStudio preferences file instead of using its own. | ||
+ | *compiler: test#attach128 — Fixed a bug that could lead to both false positives and false negatives when checking for void safety rules of object initialization involving assigner commands. | ||
+ | *library (base): bug#19501 — Changed signature of the feature <e>new_cursor</e> in <e>LINKED_TREE</e> and <e>TWO_WAY_TREE</e> to avoid violation of <code lang="text">VDRD(2)</code> and added the corresponding cursor class. | ||
===Feature removed=== | ===Feature removed=== | ||
Line 48: | Line 91: | ||
*library (base): Redefined <e>{TABLE}.valid_key</e> in <e>HASH_TABLE</e> to <e>has</e> to be consistent with uses of <e>valid_key</e> in other containers. | *library (base): Redefined <e>{TABLE}.valid_key</e> in <e>HASH_TABLE</e> to <e>has</e> to be consistent with uses of <e>valid_key</e> in other containers. | ||
*library (base): Marked <e>{HASH_TABLE}.valid_key</e> as obsolete with a recommendation to remove calls to it or to replace them with calls to <e>{HASH_TABLE}.has</e>. | *library (base): Marked <e>{HASH_TABLE}.valid_key</e> as obsolete with a recommendation to remove calls to it or to replace them with calls to <e>{HASH_TABLE}.has</e>. | ||
+ | *library (base): Marked the following features as obsolete: | ||
+ | ** <e>duplicate</e> (<e>CHAIN</e>, <e>HEAP_PRIORITY_QUEUE</e>, <e>SUBSET</e>, <e>TREE</e> and descendants) | ||
+ | ** <e>duplicate_all</e> (<e>ARRAYED_TREE</e>, <e>BINARY_TREE</e>, <e>DYNAMIC_TREE</e>, <e>FIXED_TREE</e>) | ||
+ | ** <e>fill</e> (<e>TREE</e>) | ||
+ | ** <e>fill_subtree</e> (<e>TREE</e> and descendants) | ||
+ | ** <e>new_chain</e> (<e>DYNAMIC_CHAIN</e>, <e>MULTIARRAY_LIST</e>, <e>TWO_WAY_TREE</e> and descendants) | ||
+ | ** <e>new_filled_list</e> (<e>ARRAYED_LIST</e> and descendants) | ||
+ | ** <e>new_node</e> (<e>ARRAYED_TREE</e>, <e>FIXED_TREE</e>) | ||
+ | ** <e>new_tree</e> (<e>BINARY_TREE</e>, <e>DYNAMIC_TREE</e>, <e>LINKED_TREE</e>, <e>TWO_WAY_TREE</e>) | ||
===Developer changes=== | ===Developer changes=== | ||
+ | *EiffelStudio (error list): Supported online help for errors/warnings when longer explanations are needed and they do not fit a short built-in text. |
Latest revision as of 01:47, 26 December 2018
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 18.11.x Releases
Beta download: https://ftp.eiffel.com/pub/beta/18.11/
18.11.10.2592 (December 17th 2018)
New features
- library (wel): Added features to draw multiple lines and polygons, to fill polygons, and to enable anti-aliasing when using GDI+. Added features to set dash styles and line joins for a pen when using GDI+.
- compiler: Used assertion expressions as assertion tags when the tags are absent to improve diagnostics of assertion violations. For example, an untagged assertion with an expression
is_valid
is considered as having a tagis_valid
. - library (base): Added to
HASH_TABLE
a featuredefinite_item
that always returns an existing element assuming that the key is in the table (the feature has the corresponding precondition). - compiler: Supported conditions based on current void safety compilation mode.
- EiffelStudio: Added Export/Imports functionality of editor tabs as text (available in the hidden menu>Service>Import/Export tabs... , Ctrl+Alt+D).
- library (jwt): Added a new JWT extension libary implemented with openssl to support the JWT algorithms RS256, RS384, and RS512.
- example (scoop): Added an example
processor_pool
to demonstrate how a pool of active processors can be used to execute tasks from passive regions. - library (base): Added creation procedures
make_from_iterable
to the classes that exposed a featureduplicate
(except for tree classes). - library (vision): Added a feature
{EV_DRAWABLE}.set_anti_aliasing
to control whether anti-aliasing should be used when drawing. - library (OpenSSL): Updated OpenSSL library with asymmetric algorithms (RSA). Added a new RSA API
SSL_RSA
with features to sign and verify with differents SHA algorithms (256, 384 and 512). Added classes to create keypairsSSL_KEY_PAIR
using PEM and PCKS#1 format.
Improvements
- library (uuid): Marked
{UUID_GENERATOR}.generate_uuid
as a class feature and made the code of the class SCOOP-compatible. - library (base): Updated
CHARACTER_PROPERTIES
to use Unicode 11.0.0 instead of 10.0.0. - compiler: Implemented direct code generation for
{CHARACTER_8}.minus
and{CHARACTER_32}.minus
. - EiffelStudio (diagram): Improved scaling of client-supplier lines in a diagram tool by allowing for a minimum width of 3 pixels and proportional increase of nested lines width and arrow size to the overall line width.
- library (base): Added a new class
EMPTY_ITERATION_CURSOR
that can be used to implement iteration cursors for structures without any elements. - library (base): Added an inheritance link from
CONTAINER
toITERABLE
, so that all containers can be iterated over using an across loop. Most notable additions are queues, trees and files. Potential incompatibility: a descendant of a deferred container class of the library may need to implement a featurenew_cursor
. - library (base): Changed signatures of all features of
HASH_TABLE
that accepteddetachable G
in the arguments to takeG
instead. - library (cms): Improved security (protection against XSS, finer permissions especially related to authentication). Added new
SECURITY_HTML_CONTENT_FILTER
content filter. - library (json): Improved performance of the JSON parser (by 40% on large regular files).
- EiffelStudio: Added an entry Compile from scratch to Project menu to do a clean compilation instead of incremental recompilation (not needed in general, except for rare cases when the compiler encounters an internal error due to significant changes to the class structure, or a sequence of recompilations with intermediate compilation errors).
- EiffelStudio: Added the description note content of class in the class tool (can be enabled/disabled by a toolbar button).
- EiffelStudio: Changed completion pop-up to show the associated target class (if any) before the list of choices.
- library (cms): Improved administration for OAuth authentication.
- library (jwt): Supported registration of a custom
JWT_ALG
object that implements JWT signing algorithm (in addition to the provided algorithmsHS256
andNONE
) and added an extension library with OpenSSL-based algorithmsRS256
,RS384
,RS512
. - library (eiffelweb): Adopted nanoseconds timeout precision for EiffelWeb settings (in .ini file, use
ns
,us
,ms
, ors
to specify measurement units). - library (json): Added a basic deserialization component to translate JSON content into Eiffel objects of classes
ARRAYED_LIST
,STRING_TABLE
and others. - library (json): Added a feature
JSON_VALUE.chained_item (a_key): JSON_VALUE
to be able to do chained calls likejson @ "person" @ "address" @ "city"
and to get an associated JSON value (if any) orJSON_NULL
. - library (EiffelStore ODBC): Implemented a feature
ODBC.affected_row_count
. - library (openssl): Updated OpenSSL library to version 1.1.1a.
- compiler(debugger): Taken into account assertions breakpoints, even if assertions are discarded in final mode, to make sure the exception trace uses the same stop point numbers in both final and workbench mode.
- EiffelStudio (debugger): Added notification to the call stack whether the call is a regular one or a non-object one.
- library (openssl): Updated OpenSSL Asymetric Crypto algorithm with RSA API with new features to sign using different SHA algorithms (256, 384 and 512) and RSA Digest Verification with different algorithms (256, 384, 512).
- EiffelStudio (error list): Added online help for
VWMA(1)
warning that can be opened the same way as a built-in error/warning explanation. - library (uuid): Marked
{UUID}.is_valid_uuid
as a class feature. - EiffelStudio (diagram tool): Used anti-aliasing when drawing (can be disabled via Preferences).
- EiffelStudio: Made sure changes to Preferences of a diagram tool are immediately reflected in the diagram.
Bug fixes
- code analyzer: test#codeanalysis031 — Fixed a bug when a previously assigned variable was reported as unread (CA020) when it was both a target of a creation instruction and an argument to the corresponding creation procedure.
- code_analyzer: bug#19295 (test#codeanalysis032) — Avoided a false positive for CA020 (a local variable is not read after assignment) when the source of an assignment is detachable and cannot be used as a target of a call to
do_nothing
. - compiler: bug#19449 (test#final120, test#final126, test#runtime001) — Fixed a C code generation bug that could lead to wrong results of an equality test for references in particular cases in finalized mode when the right-hand side expression triggers GC.
- runtime: bug#19242 (test#runtime022, test#runtime023) - Fixed a bug that could lead to object heap corruption when an argument or a local of an expanded type with (recursively nested) reference attributes is passed to a feature that triggers GC.
- EiffelStudio: Fixed a bug that caused creation of generated files at a higher level than requested and using wrong names (such as
Documentationtest.xml
instead ofDocumentation/test.xml
) when exporting to XMI. - EiffelStudio (diagram): Fixed a bug that might cause an exception when performing multiple switching from an item with an existing diagram to another one in a diagram tool or when switching between BON and UML views multiple times.
- EiffelStudio (diagram): Corrected style of client-supplier links to be drawn as a double-lines in a cluster view of BON diagrams.
- compiler: Fixed a potential bug that might cause incorrect code generation for parenthesis alias after incremental recompilation if the origin of the alias changes.
- EiffelStudio (address bar): Allowed entering Unicode characters in the class field of the address bar (before any Unicode input was discarded).
- EiffelStudio (context menu): bug#19469 — Fixed a bug that might result in an exception trace when trying to invoke a context menu on a class name in the project that has not been successfully compiled.
- EiffelStudio (template manager): Fixed a bug that might cause access on void target if no template declarations are found.
- code analyzer: test#codeanalysis005 — Avoided false positives for
CA024
reported when it is possible to rewrite a regular loop as an across one. - compiler: Avoided assertion violation when a file cannot be signed because .NET 3.5 or earlier is not installed on the development machine.
- compiler: Fixed a bug that could lead to using a wrong routine ID of a parenthesis alias if this routine ID changes during incremental recompilation.
- compiler: bug#15286 (test#ccomp082), bug#17089 (test#exec332), bug#19490 (test#ccomp091) — Fixed bugs that could cause generation of invalid C code or reporting a wrong result for an object test when both source expression type and target type are expanded and incompatible.
- compiler: Removed unneeded escaping of characters inside the content of an XML element in project (
.ecf
) files. - library (json): Ensured the
JSON_STRING.item
is really UTF-8 encoded (even for characters between 128 and 255). - tool (iron): Added detection of invalid repositories to the iron command line client that can now report and remove them.
- library (svn): Added support for multi-line comments in commit operations.
- compiler: bug#19456 — Fixed bugs in handling a remote target (especially when the remote target project has no associated UUID).
- EiffelStudio (refactoring): Made sure editor position is restored after completing a refactoring.
- EiffelStudio (debugger): Removed
Current
from the object view tool for a class feature. - compiler: bug#19471 — Fixed a bug caused replacement of undefined variables by empty strings when evaluating redirection location instead of keeping the variables as is.
- EiffelStudio (wizard): Fixed a default location for EiffelWeb projects used by EiffelWeb wizard.
- library (cms): Fixed the implementation of the session expiration date, by properly setting the cookie header values
Max-Age
andExpires
. - compiler: Supported
-config_option concurrency:value
and-config_option void_safety:value
command-line options to override concurrency and void safety settings when compiling a project. - library (eiffelweb): Fixed initialization of
socket.timeout
in the standalone connector ofhttpd
and web-socket that was not set before. - EiffelBuilder: bug#19470 — Fixed a bug that caused EiffelBuilder on Linux to overwrite EiffelStudio preferences file instead of using its own.
- compiler: test#attach128 — Fixed a bug that could lead to both false positives and false negatives when checking for void safety rules of object initialization involving assigner commands.
- library (base): bug#19501 — Changed signature of the feature
new_cursor
inLINKED_TREE
andTWO_WAY_TREE
to avoid violation ofVDRD(2)
and added the corresponding cursor class.
Feature removed
User changes
- library (base): Removed a feature
sequential_search
fromBILINEAR
. - library (base): Made creation procedures secret for regular feature calls for the following classes:
- library (base): Redefined
{TABLE}.valid_key
inHASH_TABLE
tohas
to be consistent with uses ofvalid_key
in other containers. - library (base): Marked
{HASH_TABLE}.valid_key
as obsolete with a recommendation to remove calls to it or to replace them with calls to{HASH_TABLE}.has
. - library (base): Marked the following features as obsolete:
-
duplicate
(CHAIN
,HEAP_PRIORITY_QUEUE
,SUBSET
,TREE
and descendants) -
duplicate_all
(ARRAYED_TREE
,BINARY_TREE
,DYNAMIC_TREE
,FIXED_TREE
) -
fill
(TREE
) -
fill_subtree
(TREE
and descendants) -
new_chain
(DYNAMIC_CHAIN
,MULTIARRAY_LIST
,TWO_WAY_TREE
and descendants) -
new_filled_list
(ARRAYED_LIST
and descendants) -
new_node
(ARRAYED_TREE
,FIXED_TREE
) -
new_tree
(BINARY_TREE
,DYNAMIC_TREE
,LINKED_TREE
,TWO_WAY_TREE
)
-
Developer changes
- EiffelStudio (error list): Supported online help for errors/warnings when longer explanations are needed and they do not fit a short built-in text.