Difference between revisions of "EiffelStudio 20.05 Releases"
m (→New features: Made entries about wrapped libraries readable.) |
m (→20.05.10.4470 (17/06/2020): Formatted date as in previous releases.) |
||
(32 intermediate revisions by 2 users not shown) | |||
Line 7: | Line 7: | ||
Beta download: https://ftp.eiffel.com/pub/beta/ | Beta download: https://ftp.eiffel.com/pub/beta/ | ||
− | == 20.05. | + | == 20.05.10.4470 (June 17th 2020) == |
===New features=== | ===New features=== | ||
* EiffelStudio: Added the new Wrap_c tool. | * EiffelStudio: Added the new Wrap_c tool. | ||
− | * EiffelStudio: Added command line option | + | * EiffelStudio: Added command line option <code>-reset_ide_layout</code> to reset the IDE layout (mostly docking setting for now, usually to recover from bad crash). |
− | * library: | + | * library (base): Added <e>READABLE_STRING</e> and <e>IMMUTABLE_STRING</e> as aliases to sized versions of string classes. |
− | {| | + | * compiler: Supported a mapping from <e>STRING</e> (and variations) to <e>STRING_32</e> (and variations). |
+ | * compiler: Supported multi-branch expressions that are similar to multi-branch instructions, but <code lang="text">Then_part</code>s and <code lang="text">Else_part</code> contain expressions instead of instruction sequences. | ||
+ | |||
+ | ===Improvements=== | ||
+ | * EiffelStudio: Added Unicode support in the editor search facilities. | ||
+ | * EiffelStudio: Improved account sign in solution. | ||
+ | * tools (eiffel): Improved detection of application targets. | ||
+ | * compiler (code analyzer): Avoided false positives for unneeded parentheses around expressions (<code lang="text">CA023</code>). | ||
+ | * library (base): Updated character properties to use Unicode 13.0.0. | ||
+ | * library: Updated some libraries to be compilable when <e>STRING</e> (and variants) is mapped to <e>STRING_32</e> (and variants): base, base_extension, time, base_process, process, net, diff, wel, testing. | ||
+ | * library (base): Added [https://www.eiffel.org/blog/Alexander%20Kogtenkov/2020/06/unicode-aliases Unicode aliases] for existing features in classes <e>BOOLEAN</e>, <e>COMPARABLE</e>, <e>NUMERIC</e> and their descendants. | ||
+ | * compiler: Changed evaluation of untyped manifest strings to treat them as being of type <e>STRING_32</e> if they contain characters with code points above 255. | ||
+ | |||
+ | ===Libraries Improvements=== | ||
+ | * library (sqlite3): Updated SQLite3 C code to version 3.31.1 - 2020-01-27. | ||
+ | * library (eiffelweb): Improved web form html generation, especially for select and type checkbox | ||
+ | * library (smarty): Added support for manifest string in condition, such as {if expression="$foo ~'bar'"} ...{/if} . | ||
+ | * library (cms): improved database connection, and error handling during connection. | ||
+ | * library (wikitext): Updated wikitext xhtml generator to follow recommendations from https://validator.w3.org/ | ||
+ | * library (curl): Updated cURL binaries using static linking of Microsoft's C RunTime (CRT) to avoid dependency on vcruntime140.dll. | ||
+ | * library (base): Moved built-in routines to <e>ISE_RUNTIME</e>, and also from <e>WEL_IDENTIFIED</e> to <e>IDENTIFIED_ROUTINES</e>. | ||
+ | * library (base): Added support for simpler Unicode output in the console based on new <e>PLAIN_TEXT_FILE.put_string_32</e>. | ||
+ | * library (cms): Improved authentication implementation. | ||
+ | |||
+ | ===New libraries=== | ||
+ | * Multiple new wrappers for C libraries: | ||
+ | {| style="border: solid 1px #ccc;" | ||
!Wrapper | !Wrapper | ||
!Description of C library | !Description of C library | ||
Line 44: | Line 70: | ||
|Libtidy is a C static and dynamic library that developers can integrate into their applications in order to bring all of HTML Tidy's power to your favorite tools. libtidy is used today in desktop applications, web servers, and more. | |Libtidy is a C static and dynamic library that developers can integrate into their applications in order to bring all of HTML Tidy's power to your favorite tools. libtidy is used today in desktop applications, web servers, and more. | ||
|} | |} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
===Bug fixes=== | ===Bug fixes=== | ||
Line 69: | Line 79: | ||
* compiler: test#final134 — Fixed a bug that may cause memory corruption in finalized mode when a feature with an argument of a reference type has a single instruction with a single call which is instance-free and uses the argument. | * compiler: test#final134 — Fixed a bug that may cause memory corruption in finalized mode when a feature with an argument of a reference type has a single instruction with a single call which is instance-free and uses the argument. | ||
* compiler: test#exec347 — Fixed a bug that might cause memory corruption or a crash if the application uses a feature argument as an anchor without using the argument value. | * compiler: test#exec347 — Fixed a bug that might cause memory corruption or a crash if the application uses a feature argument as an anchor without using the argument value. | ||
+ | * EiffelStudio: Fixed bugs causing clickable formats to report an error when restricted or symbolic forms of loops are used. | ||
+ | * EiffelStudio: Fixed rendering of symbolic forms of loops in a clickable format and stepping through them in the debugger. | ||
+ | * compiler: bug#19647 (test#attach129) — Fixed a bug that might cause a self-initializing attribute of an attached type to remain void if it is not properly set by a creation procedure, has body, and the body does not set result to non-void value. | ||
+ | * compiler: bug#19637 (test#syntax075) — Fixed a bug that prevented from using multiple feature aliases in renaming. | ||
+ | * compiler: Fixed a potential bug when a wrong type can be computed for tuples, arrays, conditional and multi-branch expressions with mutual nesting. | ||
+ | * EiffelStudio: Fixed a bug when non-existing class options were checked against computed class options rather than explicitly specified ones that caused errors when a class from a parent cluster had options (sample scenario: compile cURL, open <e>CURL_CODES</e> in the editor, and recompile: the class could not be found in nested clusters). | ||
===Features removed=== | ===Features removed=== | ||
+ | * library (base): Marked <e>{READABLE_STRING_GENERAL}.plus</e> as obsolete to avoid potential data loss when precondition of the feature is not maintained. | ||
===User changes=== | ===User changes=== | ||
+ | * library (base): Changed behavior of <e>{CHARACTER_8}.to_lower</e> and <e>{CHARACTER_8}.to_upper</e> (as well as versions for <e>CHARACTER_8_REF</e>), as well as property queries, to interpret characters with codes 128-255 according to ISO 8859-1. | ||
+ | * library (base): Renamed <e>{READABLE_STRING_GENERAL}.plus</e> in descendants and added sized variants of feature <e>plus</e> to sized variants of strings. | ||
+ | * library (base): Added the following implicit conversions: | ||
+ | ** <e>IMMUTABLE_STRING_8</e> → <e>READABLE_STRING_32</e>; | ||
+ | ** <e>IMMUTABLE_STRING_GENERAL</e> → <e>IMMUTABLE_STRING_32</e>, <e>READABLE_STRING_32</e>, <e>STRING_32</e>; | ||
+ | ** <e>READABLE_STRING_GENERAL</e> → <e>IMMUTABLE_STRING_32</e>, <e>READABLE_STRING_32</e>, <e>STRING_32</e>; | ||
+ | ** <e>STRING_GENERAL</e> → <e>IMMUTABLE_STRING_32</e>. | ||
+ | * compiler: Changed the list of expressions that are allowed to be used in object tests without an explicit type, e.g. <e>Current</e> cannot be used anymore, because it is always attached and most probably such an expression indicates an error, and allowed to use any expression in an object test as soon as there is an explicit type. | ||
===Developer changes=== | ===Developer changes=== |
Latest revision as of 21:37, 22 June 2020
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 20.05.x Releases
Beta download: https://ftp.eiffel.com/pub/beta/
20.05.10.4470 (June 17th 2020)
New features
- EiffelStudio: Added the new Wrap_c tool.
- EiffelStudio: Added command line option
-reset_ide_layout
to reset the IDE layout (mostly docking setting for now, usually to recover from bad crash). - library (base): Added
READABLE_STRING
andIMMUTABLE_STRING
as aliases to sized versions of string classes. - compiler: Supported a mapping from
STRING
(and variations) toSTRING_32
(and variations). - compiler: Supported multi-branch expressions that are similar to multi-branch instructions, but
Then_part
s andElse_part
contain expressions instead of instruction sequences.
Improvements
- EiffelStudio: Added Unicode support in the editor search facilities.
- EiffelStudio: Improved account sign in solution.
- tools (eiffel): Improved detection of application targets.
- compiler (code analyzer): Avoided false positives for unneeded parentheses around expressions (
CA023
). - library (base): Updated character properties to use Unicode 13.0.0.
- library: Updated some libraries to be compilable when
STRING
(and variants) is mapped toSTRING_32
(and variants): base, base_extension, time, base_process, process, net, diff, wel, testing. - library (base): Added Unicode aliases for existing features in classes
BOOLEAN
,COMPARABLE
,NUMERIC
and their descendants. - compiler: Changed evaluation of untyped manifest strings to treat them as being of type
STRING_32
if they contain characters with code points above 255.
Libraries Improvements
- library (sqlite3): Updated SQLite3 C code to version 3.31.1 - 2020-01-27.
- library (eiffelweb): Improved web form html generation, especially for select and type checkbox
- library (smarty): Added support for manifest string in condition, such as {if expression="$foo ~'bar'"} ...{/if} .
- library (cms): improved database connection, and error handling during connection.
- library (wikitext): Updated wikitext xhtml generator to follow recommendations from https://validator.w3.org/
- library (curl): Updated cURL binaries using static linking of Microsoft's C RunTime (CRT) to avoid dependency on vcruntime140.dll.
- library (base): Moved built-in routines to
ISE_RUNTIME
, and also fromWEL_IDENTIFIED
toIDENTIFIED_ROUTINES
. - library (base): Added support for simpler Unicode output in the console based on new
PLAIN_TEXT_FILE.put_string_32
. - library (cms): Improved authentication implementation.
New libraries
- Multiple new wrappers for C libraries:
Wrapper | Description of C library |
---|---|
wrap_yaml | LibYAML is a YAML parser and emitter library. |
wrap_sdl | Simple DirectMedia Layer is a cross-platform development library designed to provide low-level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D. It is used by video playback software, emulators, and popular games including Valve's award-winning catalog and many Humble Bundle games. |
wrap_libusb | libusb is a C library that provides generic access to USB devices. It is intended to be used by developers to facilitate the production of applications that communicate with USB hardware. It is portable: Using a single cross-platform API, it provides access to USB devices on Linux, macOS, Windows, etc. |
wrap_quirc | Quirc is a C library for scanning QR codes. |
wrap_lz4 | Extremely fast compression library. |
wrap_libqrencode | Libqrencode is a fast and compact library for encoding data in a QR Code, a 2D symbology that can be scanned by handy terminals such as a smartphone. The capacity of QR Code is up to 7000 digits or 4000 characters and has high robustness. |
wrap_libgit2 | libgit2 is a portable, pure C implementation of the Git core methods provided as a re-entrant linkable library with a solid API, allowing you to write native speed custom Git applications in any language which supports C bindings. |
wrap_gsl | The GNU Scientific Library (GSL) is a collection of routines for numerical computing. |
wrap_tidy | Libtidy is a C static and dynamic library that developers can integrate into their applications in order to bring all of HTML Tidy's power to your favorite tools. libtidy is used today in desktop applications, web servers, and more. |
Bug fixes
- EiffelStudio: When forcing the reload of current editor (Ctrl-R), open a confirmation dialog if file is modified.
- EiffelStudio: Fixed display of variables and type mappings in project settings.
- EiffelStudio: Improved the code completion popup dialog (filter, Unicode, ...)
- library (feed): Improved RSS2 and ATOM implementation for validation.
- library (xml): Escape any non ASCII character.
- compiler: test#final134 — Fixed a bug that may cause memory corruption in finalized mode when a feature with an argument of a reference type has a single instruction with a single call which is instance-free and uses the argument.
- compiler: test#exec347 — Fixed a bug that might cause memory corruption or a crash if the application uses a feature argument as an anchor without using the argument value.
- EiffelStudio: Fixed bugs causing clickable formats to report an error when restricted or symbolic forms of loops are used.
- EiffelStudio: Fixed rendering of symbolic forms of loops in a clickable format and stepping through them in the debugger.
- compiler: bug#19647 (test#attach129) — Fixed a bug that might cause a self-initializing attribute of an attached type to remain void if it is not properly set by a creation procedure, has body, and the body does not set result to non-void value.
- compiler: bug#19637 (test#syntax075) — Fixed a bug that prevented from using multiple feature aliases in renaming.
- compiler: Fixed a potential bug when a wrong type can be computed for tuples, arrays, conditional and multi-branch expressions with mutual nesting.
- EiffelStudio: Fixed a bug when non-existing class options were checked against computed class options rather than explicitly specified ones that caused errors when a class from a parent cluster had options (sample scenario: compile cURL, open
CURL_CODES
in the editor, and recompile: the class could not be found in nested clusters).
Features removed
- library (base): Marked
{READABLE_STRING_GENERAL}.plus
as obsolete to avoid potential data loss when precondition of the feature is not maintained.
User changes
- library (base): Changed behavior of
{CHARACTER_8}.to_lower
and{CHARACTER_8}.to_upper
(as well as versions forCHARACTER_8_REF
), as well as property queries, to interpret characters with codes 128-255 according to ISO 8859-1. - library (base): Renamed
{READABLE_STRING_GENERAL}.plus
in descendants and added sized variants of featureplus
to sized variants of strings. - library (base): Added the following implicit conversions:
-
IMMUTABLE_STRING_8
→READABLE_STRING_32
; -
IMMUTABLE_STRING_GENERAL
→IMMUTABLE_STRING_32
,READABLE_STRING_32
,STRING_32
; -
READABLE_STRING_GENERAL
→IMMUTABLE_STRING_32
,READABLE_STRING_32
,STRING_32
; -
STRING_GENERAL
→IMMUTABLE_STRING_32
.
-
- compiler: Changed the list of expressions that are allowed to be used in object tests without an explicit type, e.g.
Current
cannot be used anymore, because it is always attached and most probably such an expression indicates an error, and allowed to use any expression in an object test as soon as there is an explicit type.
Developer changes
- library(curl): better error message.
- library(curl): added SFTP example.
- library(gobo): updated to Gobo 19.11