Difference between revisions of "EiffelStudio 18.11 Releases"

m (New features: Clarified where import/export of editor tabs is added.)
m (Improvements: Fixed typos.)
Line 22: Line 22:
 
*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): All features of <e>HASH_TABLE</e> that accepted <e>detachable G</e> in the arguments now take <e>G</e>.
+
*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 SECURITY_HTML_CONTENT_FILTER content filter.
+
*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 memory and speed performance of the JSON parser.
+
*library (json): Improved memory and speed performance of the JSON parser.
*EiffelStudio(debugger): improved evaluation of class routine.
+
*EiffelStudio (debugger): Improved evaluation of class routine.
*EiffelStudio: Added "Compile from scratch" to Project menu.
+
*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/disable via a toolbar button).
+
*EiffelStudio: Added the description note content of class in the class tool (can be enabled/disabled by a toolbar button).
*EiffelStudio: In the completion Window, show the associated target class (if any) before the list of choices.
+
*EiffelStudio: Changed completion pop-up to show the associated target class (if any) before the list of choices.
*library (cms): Better administration for OAuth authentication.
+
*library (cms): Improved administration for OAuth authentication.
*library (JWT): made algorithm support more flexible, and simple to extend with specific algorithm.
+
*library (jwt): Made algorithm support more flexible, and simple to extend with specific algorithm.
*compiler(ecf): added support for condition on void_safety.
+
*compiler: Supported conditions in Project settings (<code lang="text">.ecf</code> files) based on <code lang="text">void_safety</code> setting.
*library (eiffelweb): Adopted nanoseconds timeout precision for EiffelWeb settings (in .ini file, use ns, us, ms, or s for the precision)
+
*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 serialization component that could be used easily for simple cases.
+
*library (json): Added a basic serialization component.
*library (json): Added JSON_VALUE.chained_item (a_key): JSON_VALUE to be able to access `json@"person"@"address"@"city"` and return associated JSON value if any, otherwise JSON_NULL.
+
*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>.
*compiler(debugger): During classic finalization, when exception trace is enabled, take into account assertions breakpoints, even if assertions are not kept. This way, exception trace in final mode looks similar to the workbench one.
+
*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(callstack): Display in the callstack if stack is related to non object call.
+
*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 with different sha algorithms (256, 384 and 512) and RSA Digest Verification with different algorithms (256, 384, 512).
+
*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).
 +
 
 
===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.

Revision as of 03:30, 26 November 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.xx.yyyy ()

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 tag is_valid.
  • library (base): Added to HASH_TABLE a feature definite_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.

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 to ITERABLE, 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 feature new_cursor.
  • library (base): Changed signatures of all features of HASH_TABLE that accepted detachable G in the arguments to take G 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 memory and speed performance of the JSON parser.
  • EiffelStudio (debugger): Improved evaluation of class routine.
  • 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): Made algorithm support more flexible, and simple to extend with specific algorithm.
  • compiler: Supported conditions in Project settings (.ecf files) based on void_safety setting.
  • library (eiffelweb): Adopted nanoseconds timeout precision for EiffelWeb settings (in .ini file, use ns, us, ms, or s to specify measurement units).
  • library (json): Added a basic serialization component.
  • library (json): Added a feature JSON_VALUE.chained_item (a_key): JSON_VALUE to be able to do chained calls like json @ "person" @ "address" @ "city" and to get an associated JSON value (if any) or JSON_NULL.
  • 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).

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.
  • 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 of Documentation/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(ecf): do not escape quotes, >, ... inside the content of an XML element.
  • library (json): ensure the JSON_STRING.item is really UTF-8 encoded (even for characters between 128 and 255)!
  • tools (iron): improved handling of invalid repositories for the iron tty client.
  • library (svn): Added support for multiline comment in commit operation.
  • compiler: Fixed various issue with remote target parents (especially when ECF file has no uuid) (bug#19456)
  • EiffelStudio(refactoring): properly refresh the editor when the refactoring is completed, and retarget the expected feature if any.
  • compiler: when evaluating redirection location, replace undefined variables by empty string (instead of keeping the variable name) (bug#19471).
  • EiffelWeb wizard: fixed default location for EiffelWeb projects.
  • library (cms): Better support for session expiration date.
  • compiler(usage): better support for -config_option concurrency:value and -config_option void_safety:value for ec compiler in tty mode.
  • library (eiffelweb): Fixed setting of socket.timeout in httpd (was not currently set before). This applies to standalone connector, and websocket.
  • esbuilder: redefined the product name, so on Linux, it uses specific preferences xml file and do not overwrite EiffelStudio preferences file (bug#19470).

Feature removed

User changes

Developer changes