EiffelStudio 6.3 Releases

Revision as of 23:10, 16 August 2008 by Alexander Kogtenkov (Talk | contribs) (Improvements: Added notes about syntax changes in the editor and clickable views.)

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 6.3.x Releases

6.3.x

Placeholder for new stuff since last intermediate release.

New features

  • base: Added the notion of read-only strings in EiffelBase. The goal is to also introduce the notion of immutable string before the final 6.3 release.

Improvements

  • studio: Supported the new standard syntax for the indexing clause with the note keyword in the clickable view.
  • studio: Made note to be highlighted in the editor as a keyword.
  • studio: Supported the new standard syntax in the clickable view for a loop variant that is shown just before the end of the loop.

Feature removed

Bug fixes

  • studio: Fixed some memory leaks when opening and closing EiffelStudio over times.
  • runtime: Fixed bug#14548 (eweasel#except031) where a stack trace only contained the stack trace up to the `rescue' clause which caught the exception. Now it shows the stack trace up to the root creation procedure.

User changes

Developer changes

  • compiler: you can now specifies several root class/procedure for one project. This functionality is currently hidden to the compiler and the new testing tool. It will be exposed in the project configuration file, debugger and UI in 6.4.

6.3.7.4335 (August 4th 2008)

Improvements

  • studio: Improved the library choice dialog.
  • studio: Fixed bug#14123, bug report dialog now takes information from original exception object as titles.

Bug fixes

  • compiler: Fixed eweasel test#final061 and test#final063 where some kind of code could cause a crash of the compiler during degree -3 with inlining enabled.
  • compiler: Fixed eweasel test#final063 which caused a C compiler error when your code uses an inline agent in an assertion and the routine in which it is defined is deferred.
  • runtime: Fixed a buffer overflow that would occur on some Unix platforms when a signal was received by the application. Found while finding that test#execpt016 started to fail consistently on a run of eweasel. It actually fixes about 8 other eweasel tests on Unix.
  • runtime: Fixed eweasel test#thread005 due to a recently added modification in the 6.3 runtime series which caused a potential memory corruptions when threads are exiting.
  • runtime: Fixed eweasel test#thread006 where if many threads allocate small objects which are quickly dying then we could break the runtime synchronization and cause a crash.
  • runtime: Fixed eweasel test#except030 trace was not correct for the first time an exception was raised in an once routine.
  • runtime: Fixed bug#14578 and test#except029, where finalized code crashed when trace printing due to the original exception raised by invalid objects.
  • studio: Fixed bug#14600 that many undoes crashed the editor.
  • studio: Fixed a memory leak in EIS tool which prevented a second development window from collection.
  • studio: Fixed bug#13251 that user without write permission crashed ES when opening an existing project.
  • studio: Fixed bug#14526 that double clicking did not select a whole word.
  • studio: Fixed bug#14350, a code completion crash when there were obsolete features.

Developer changes

  • runtime: Exposed `ereturn' so that generated code can see it.

6.3.7.4123 (July 21st 2008)

New features

  • base: Added `sleep' to EXECUTION_ENVIRONMENT and made `sleep' from THREAD_CONTROL obsolete.
  • base: Added `read_xxx_thread_aware' in IO_MEDIUM so that reading a file is not blocking in a multithreaded context.
  • editor: support Unicode.

Improvements

  • Optimized code generation for object test to avoid type evaluation when it is not used and to replace a full-fledged object test with a plain voidness test if an expression type is known to conform to the object test local type at compile time.
  • runtime: Improved trace printing by using ellipses when names are too long to print.

Feature removed

Bug fixes

  • process: Fixed an issue with the library when redirecting inputs/outputs of the child process. Sometime we would be missing some characters and cause a memory corruption at the same time.
  • com/compiler: Renamed `eif_com.h' from the compiler delivery into `eif_com_exception.h' as it conflicts with `eif_com.h' from the EiffelCOM library.
  • compiler: Fixed eweasel test#valid222 where compiler properly detects VDRS-4 errors when you redefine a repeatedly inherited routine in at least one but not all branches, but fail to provide a local definition.
  • compiler: Fixed Makefile code generation issue on machine with many cores which could cause a C compilation error because some dependencies are missing in the Makefile targets.
  • compiler: Fixed bug#13881 where if you have a VKCN error when using a routine whose return type is a like argument then it would crash instead of reporting the VKCN error. Improved VKCN error reporting by providing the instruction or expression which causes the problem.
  • compiler: Fixed updated eweasel test#rdtp001 and test#term158 where if TUPLE is not written using upper case characters, then the compiler will crash when trying to analyze the type.
  • compiler: Fixed the issue found with GCC 4.x series where an assignment of the form *(a + x) = f() would first evaluate (a+x) and then `f' which could cause a memory corruption if `f' triggers a GC cycle. As far as we could tell, this kind of code generation was only done when `f' would return a basic type. See eweasel test#runtime007.
  • compiler: Fixed eweasel test#ccomp076 where C/C++ inlines did not get the protected object if any, but only the unprotected one which could cause some issue if the C/C++ inline code uses `eif_access' or `eif_adopt'.
  • runtime: When registering externally created threads, make sure that the runtime does not exit them when no more Eiffel code needs to be run as it must be done by the code that created it. Also made sure that the runtime per thread data are reset to 0 to ensure that we can register/unregister the external thread as many times as needed.
  • runtime: Added a cast to ensure that `eif_globals' can compile properly in C++ mode.
  • runtime: Fixed eweasel test#runtime008 where we have a leak on each created thread if invariants are monitored.
  • runtime: Fixed eweasel test#runtime009 where an allocation in the free list does not always guarantee that the EO_NEW flag will be set. In some condition, when `moved_set' is full, we will clear the EO_NEW flag and set the object directly to EO_OLD. This is why in `sprealloc' we need to check for both `EO_NEW' and `EO_OLD' otherwise we will fail to update the content of the special after a GC cycle.
  • runtime: Save `errno' for runtime io error exception, so that it is accessible in exception object.
  • runtime: Free `ex_string.item' allocated for trace printing when disposing threads to avoid memory leak. Fixed bug#14472.
  • runtime: This fixed bug#14465, that exception trace always printed "Exit" as Effect.
  • runtime: Fixed test#except027 and bug#14450 that exception trace was not thread safe because of static buffers were used.
  • runtime: Fixed test#except026 and bug#14477 that `sprintf' overflew buffer, which caused crash.
  • runtime: Use per thread data as flags in `eif_panic' and `fatal_error' to avoid cascade. They were not thread safe.
  • runtime: Fixed a bug that the actual trace building was done twice. This was due to unwise macro use.
  • runtime: Use `eif_rt_xmalloc', `eif_rt_xfree' and `xrealloc' to process memory of `ex_string', so it is freed in `reclaim' automatically at the very end of process.
  • runtime: Fixed bug#14543, where there was actually a runtime crash when raising an invariant violation. See test#except028.
  • i18n: Corrected postcondition of `get_file_dictionary'. Use `get_file_dictionary' instead of `extract_dictionary' as `get_file_dictionary' handles `can_handle' properly.
  • editor: Improved cursor rendering colors, so that in all background colors, it has good feedback. Fixed bug#10165.
  • studio: Fixed bug#12220 that the action combo box on project startup dialog was too narrow to see full contents in it.
  • studio: Fixed an unprotected usage of {CHARACTER}.is_space . This fixed bug#14274.

User changes

  • runtime: changed the way files are opened on Windows by ensuring that they cannot be inherited by child processes. This was necessary since one would need to wait for the child process to exit to remove files owned by the parent process.
  • runtime: renamed `eif_thr_sleep' into `eif_sleep'.

Developer changes

  • encoding: Changed APIs of encoding library to be command/query. Added `last_converted_stream'.
  • encoding: Added SYSTEM_ENCODINS in encoding library (abstracted from SHARED_LOCALE).
  • encoding: Added abstract encoding detector in encoding library.
  • compiler: Changed {CLASS_I}.text to STRING_32 that returns class text in Unicode. Added interface ENCODING_CONVERTER into the compiler. This interface can also be used later to handle encoding conversion without introducing the encoding library.