EiffelStudio 17.01 Releases

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 red. 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 17.01.x Releases

Beta download: https://ftp.eiffel.com/pub/beta/17.01/


New features

  • library: Supported a version of a process library (used to launch external processes) for single-threaded environments. It differs from the full-fledged version by absence of wait for process termination with timeout (no wait_for_exit_with_timeout), asynchronous writing to child process standard input (put_string is blocking) and reading from child process standard output and error streams (redirection to agents is not supported). Performance-wise, a combination of {BASE_PROCESS}.launch/{BASE_PROCESS}.wait_for_exit runs faster than a call to {EXECUTION_ENVIRONMENT}.system.
  • EiffelStudio: Added a notion of capabilities that allows for specifying what settings a particular library is capable of. At the moment the settings include cat-call detection, concurrency and void safety. A project or a library with a specific setting cannot rely on a library with insufficient capabilities. Current ordering of capabilities is
    • CAT-call detection: None < Transitional < Complete
    • Concurrency: Thread < None < SCOOP
    • Void safety: None < Conformance < Initialization < Transitional < Complete
A project with a higher level of capabilities cannot rely on a library with a lower level. A project with a specific capability can be compiled using a lower level of this capability.
  • EiffelStudio: Added new Import settings dialog. It is shown when a new version of EiffelStudio is launched for the first time, and available at any time from menu Tools > Import Settings.
  • EiffelStudio: Added code templates functionality. Using code completion, it is possible to insert predefined code template as-is or modify them as necessary. User can as well create his own templates (custom templates).


  • EiffelStudio: Configuration option "Are types attached by default?" defaults to True when reading non-void-safe projects so that if the project is changed to be void-safe, the recommended default for attachment status of class types without marks is used.
  • compiler: Supported nested inlining of a selected set of features from SPECIAL in finalized mode: base_address, clear_all, copy_data, count, item, overlapping_move, non_overlapping_move, put.
  • compiler: Fix crash in melted code when calling {TYPE}.is_attached, {TYPE}.is_expanded.
  • Library (Base): Add ability to change the start position when storing/retrieving using a SED_MEMORY_READER_WRITER.
  • Library (Base): Add {TYPE}.is_deferred and use this in {REFLECTOR}.new_instance_of to avoid creating abstract type at runtime.
  • Library (Base): Refactored RT_DEBUGGER with breaking changes: rt_worbench_for_for_debugger renamed into wait_for_debugger and discard_debug into disable_debug.
  • EiffelStudio: Grouped options in target/library/precompile/cluster/class tabs in Project settings dialog in sections by their purpose.
  • EiffelStudio: Supported multiline descriptions in an option tab of Project settings dialog and in Customized formatters dialog.
  • EiffelStudio: Changed how the debugger objects tool displays the Result value, now it does not have any parent row.
  • Compile_all: Added ISE_COMPILE_ALL_FLAGS environment variable support to the compile_all tool (its value is added to compile_all command line arguments).
  • Compile_all: now are excluded ecf redirection files from recursive scope.
  • Library (Net): Added receive and send timeout.
  • Library (Net): Added C functions to use socket functions without raising exception on I/O networking error.
  • Library (EiffelWeb/EWF): Changed the standalone connector implementation to avoid raising exception for any networking error (it brings better debugger experience).
  • Library (EiffelWeb/EWF): Added new websocket standalone connector to be able to build within the same processor a web service and a websocket service.
  • Library (EiffelWeb/EWF): Change the networking programing in EiffelWeb components, to benefit from recent improvements on EiffelNet.
  • Library (EiffelWeb/EWF): Added finer control on standalone connector. It is now possible to fine tune the standalone connector (concurrent settings, timeout values, ...)
  • Library (json): Added new JSON serialization solution under $ISE_LIBRARY/contrib/library/text/parser/json/library/serialization.

Feature removed

  • EiffelStudio: Removed option "Are types attached by default?" from project settings dialog. Potential incompatibility: old Eiffel configuration files (ECF) that rely on "class types are detachable by default" policy and migrate to "attached by default" policy will need to be changed directly by editing the file, not from EiffelStudio.
  • library: Removed support for automatic retrieval of data by SED_STORABLE_FACILITIES using SED_INDEPENDENT_DESERIALIZER that was obsolete for several releases. SED_INDEPENDENT_DESERIALIZER will be removed from the library in a later release.
  • EiffelStudio: Removed a possibility to set void safety level for a specific class or cluster, it can be done only for a whole library or project.

Bug fixes

  • runtime: Fixed a bug in the CECIL macro eif_attribute_type that always returned EIF_POINTER_TYPE instead of the type code corresponding to the actual attribute type.
  • library (Net): Properly handle BCC recipients by really hiding them.
  • compiler: Fix C compilation errors when using the profiler in final mode on strict C compilers (fix bug#19193 and eweasel test#final16, test#ccomp070)
  • compiler: test#melt108, test#melt109 - Fixed a bug that led to an incorrect type of a boxed object of a sized variant of NATURAL obtained as a result of two reattachments: manifest constant to a variable of this NATURAL type and this variable to a reference entity.
  • compiler: bug#19264 (test#attach121) - Fixed a bug that caused an exception trace when reporting a bug about uninitialized attributes for an inline agent in presence of other bug reports.
  • runtime: bug#18952 (test#melt106) - Fixed a bug that might cause a program crash in a precondition with an object test with an explicitly specified expanded type.
  • library (Base): bug#19278 (test#store044) - Fixed a bug that might cause failure to retrieve objects stored by a different system if some reference attributes or SPECIAL storage were attached to expanded objects.
  • compiler: test#attach122 - Fixed a regression bug that might cause incorrect optimization of an object test when its expression is a local variable declared as attached or a result of a feature of an attached type leading to access on void target during execution.
  • compiler: test#attach123 - Avoided optimizing away object tests when their expressions are of attached types unless the whole system is compiled in complete void safety mode.

User changes

  • library: Marked {ANY}.as_attached as obsolete to simplify removal of calls to it when transition to void-safe code is finished.
  • compiler: Changing a concurrency setting for a compiled project causes a compiler error instead of a warning.

Developer changes