https://dev.eiffel.com/api.php?action=feedcontributions&user=Paulb&feedformat=atomEiffelStudio: an EiffelSoftware project - User contributions [en]2024-03-29T12:53:46ZUser contributionsMediaWiki 1.24.1https://dev.eiffel.com/index.php?title=EiffelStudio_6.6_Releases&diff=13549EiffelStudio 6.6 Releases2009-12-09T00:19:27Z<p>Paulb: /* 6.6.x */</p>
<hr />
<div>[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}<br />
<br />
= EiffelStudio 6.6.x Releases=<br />
<br />
==6.6.x==<br />
Placeholder for new stuff since last intermediate release. <br />
===New features===<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
* studio: Fixed editor refresh issue when saving modifications in the Contract Tool.<br />
* studio: Fixed catcalls when building the Contract Tool.<br />
===User changes===<br />
===Developer changes===</div>Paulbhttps://dev.eiffel.com/index.php?title=Talk:Library_Categorization&diff=13511Talk:Library Categorization2009-10-27T19:16:48Z<p>Paulb: </p>
<hr />
<div>Instead of gui_design, gui_graph, ...<br />
I would prefer<br />
* gui<br />
** design<br />
** graph<br />
** ..<br />
<br />
argument_parser would be better as<br />
* parse<br />
** argument<br />
<br />
About Gobo, it could be exploded into kernel, structure, time, parse, lexical, xml, ... But we can not do that, so what about adding a category "Package", or "Framework" <br />
<br />
--[[User:Jfiat|Jocelyn]] 08:12, 13 August 2009 (UTC)<br />
<br />
----<br />
I would suggest the following 2-layer structure (if there is a new name, the old one is written in parentheses, in particular, ''something''_extension is not very meaningful):<br />
* base: Kernel library classes, data structure, reflection, I/O <br />
* concurrency<br />
** process: Facility to start and follow processes <br />
** thread: Threading in Eiffel <br />
** cgi (web): CGI facility for Eiffel<br />
* external: interface to the external software<br />
** ? (api_wrapper): Make it easy to call C routines from dynamically loaded shared libraries <br />
** com: COM technology <br />
** java (Eiffel2Java): Calling Java from Eiffel <br />
* gobo: Gobo <br />
* gui<br />
** docking: Facility to have a customizable UI. <br />
** event: Low level mechanism to receive a UI event when a file/pipe has something new. <br />
** graph: Representation of graph in UI (See diagram tool in Eiffel Studio). <br />
** vision2: Platform independent UI toolkit <br />
** ? (vision2_extension): Extension to Vision2 <br />
** wel: UI toolkit for Windows <br />
* storage<br />
** memory (memory_analyzer): Memory analysis<br />
** preferences: Facility to store user preferences<br />
** store: Relational database access<br />
* text<br />
** argument (argument_parser): Parsing the command line arguments of a program <br />
** diff: Diff and patch facilities <br />
** encoding: Transforming text in one encoding to another encoding <br />
** i18n: Internationalization library: <br />
** lex: lexical analysis <br />
** parse: Parsing: <br />
** uuid: UUID generation facility <br />
* util<br />
** ? (gobo_extension): ISE gobo extensions <br />
** net: Networking library <br />
** testing: Testing facility <br />
** time: Time facility <br />
<br />
--[[User:Alexander Kogtenkov|Alexander Kogtenkov]] 15:52, 18 August 2009 (UTC)<br />
<br />
----<br />
<br />
Instead of how about '''Interop'''?<br />
<br />
--[[User:Paulb|paulb]] 23:29, 18 August 2009 (UTC)<br />
<br />
----<br />
<br />
To comment Alexander's message:<br />
Given the importance of the internet today, it sounds weird to have EiffelNet under "Utils"<br />
Let's add a "Network" category ... <br />
Then, we could add twitter, jabber, eventually Eiffel Web?<br />
<br />
--[[User:Jfiat|Jocelyn]] 05:59, 19 August 2009 (UTC)<br />
<br />
----<br />
<br />
"Preferences" under UI/interface looks weird to me. If I were looking for preferences lib, I would search under "data" or "database" or "storage", but not in "ui". However, the pref lib also has Graphical components. In final, ... we should allow more than one category for a lib.<br />
<br />
--[[User:Jfiat|Jocelyn]] 06:24, 19 August 2009 (UTC)<br />
<br />
----<br />
'''Language Interfaces''' looks too long for me as well. In fact here we are talking more about interfacing to the external software, not to the particular language, as, for example, COM is a technology and not a specific language. '''Interop''' is associated for me with .NET... Just a few other possibilities:<br />
* software<br />
* call<br />
Also, ''api_loader'' sounds too generic. Shall it be ''library_loader'' or even ''library_accessor'' instead?<br />
<br />
Would it make sense to merge '''data''' and '''data_structures''' into '''data''' with subnodes '''database''' and '''adt'''? If not, it might make sense to rename '''data''' into '''persistency''' or something like that. Also, does ''event'' library belong to ADT? According to the description it's more about GUI and IO, so it could be moved to '''ui''' section.<br />
<br />
There is some inconsistency in naming as both singular and plural nouns are used. Probably it's better to stick to the same naming convention and use (as in Eiffel) only singular forms ('''utility''' instead of '''utilities''', etc.).<br />
<br />
--[[User:Alexander Kogtenkov|Alexander Kogtenkov]] 06:59, 19 August 2009 (UTC)<br />
<br />
----<br />
--[[User:Ericb|Ericb]] 07:51, 19 August 2009 (UTC): For the ''event'' library, what about the category '''pattern'''?<br />
<br />
About singular vs. plural, I'm all for singular names as well. I noticed in the some libraries that there are folders ''example''. That's good. But in some others we can find ''tests''. In order to be consistent, everything should be singular.<br />
<br />
----<br />
'''vision2_extension''' should be put in '''vision2''', only that vision2_extension.ecf can be put beside vision2.ecf. To find '''argument_parser''', I would first go to '''text''' rather than '''process''' (agree with Alexander).<br />
<br />
For the categorization, in general, we should make it as extensible as possible for not only existing libraries but also for coming ones. For example, Video/Audio, Security/Encryption, 3D Graphics and so on that are missing ones. Some of them will be put in new folders, others will be put into existing folders. <br />
<br />
For this reason, I think '''ui'''/'''gui''' is not a good name for general graphics stuff, '''graphics''' is better instead. We would suggest something like this:<br />
* graphics<br />
** drawing <br />
*** graph: Representation of graph in UI (See diagram tool in EiffelStudio)<br />
*** OpenGL ''(fictional)''<br />
*** DirectX ''(fictional)''<br />
** ui<br />
*** docking: Facility to have a customizable UI<br />
*** vision2: Platform independent UI toolkit<br />
*** vision2_extension: Extension to Vision2<br />
*** wel: UI toolkit for Windows <br />
* media ''(fictional)''<br />
** video<br />
** audio<br />
* security ''(fictional)''<br />
--[[User:Ted|Ted]] 03:27, 20 August 2009 (UTC)<br />
----<br />
<br />
One item that has not been discussed is what happens with the example project corresponding to libraries. The proposed library structure allows for contrib or unsupported libraries which may have examples to. I suggest we model the examples to match the library structure hierarchy.<br />
<br />
--[[User:Paulb|paulb]] 23:31, 20 August 2009 (UTC)<br />
----<br />
<br />
I would suggest to put the "examples" under the library itself.<br />
<br />
This way, a library is a self contained source+examples and why not +doc+tests<br />
I guess it would ease the discovering of the lib, the path in the ecf for the example, will be relative, so that if later we change the lib categorization this won't be hell to update all ecf.<br />
<br />
--[[User:Jfiat|Jocelyn]] 06:04, 21 August 2009 (UTC)<br />
<br />
<br />
----<br />
<br />
--[[User:Ericb|Ericb]] 07:19, 21 August 2009 (UTC): That's what I had planed to do with the Gobo libraries. But using singular names of course! I'm currently considering moving the Gobo repository to git. While doing that, I'm also considering creating a single repository per library and tool. That way people won't have to get the whole XML library if they are only interested in the Decimal library for example. If I do that, of course the libraries will have to be self-contained. Their tests, examples and docs should come along. It would be nice if ISE's and Gobo's (and other's) libraries and tools could follow the same pattern. That way people would be in known ground when they download and use a new library. The directory structure that I have in mind is something like that:<br />
<br />
<library_name>/<br />
code (or src, or source)<br />
doc<br />
example<br />
test<br />
----<br />
'''--[[User:Manus|manus]] 17:09, 22 August 2009 (UTC)''': I've taken most of the non-controversial suggestions. Let me know what you think. There are two categories that deserves a better name '''language_interface''' and '''data_structure'''.<br />
----<br />
If '''data_structure''' is replaced by '''concept''', the subnodes could be '''adt''' and '''pattern''' (the latter for the libraries that provide the patterns, e.g. ''event'' could go to this category). Probably, the term '''concept''' is too generic, but otherwise it perfectly matches its subnodes.<br />
<br />
The other variants are '''abstraction''', '''structure'''.<br />
<br />
For '''language_interface''' the following category names could fit:<br />
* '''bridge''' (unfortunately could be misinterpreted as a pattern name)<br />
* '''invocation'''<br />
* '''platform''' (most suitable from my point of view)<br />
--[[User:Alexander Kogtenkov|Alexander Kogtenkov]] 07:54, 24 August 2009 (UTC)<br />
<br />
<br />
----<br />
<br />
--[[User:Ericb|Ericb]] 21:13, 24 August 2009 (UTC): The reason why I suggested:<br />
<br />
<library_name>/<br />
code (or src, or source)<br />
doc<br />
example<br />
test<br />
<br />
and not:<br />
<br />
<library_name>/<br />
library<br />
doc<br />
example<br />
test<br />
<br />
is that this directory structure could be used not only for libraries but also for tools.<br />
<br />
<br />
'''--[[User:Manus|manus]] 15:48, 25 August 2009 (UTC)''': I had thought about that but forgot to add `tool' under my proposal. I think this is better this way as an automatic package distribution will know exactly where to put things. I'm definitely thinking like the Unix layout way.<br />
<br />
--[[User:Ericb|Ericb]] 07:54, 26 August 2009 (UTC): My proposal is not about having an automatic package distribution. It's about having everything related to the library (or the tool) located in one single place. When I want to use a library, it is much more practical to see whether there are examples or tests available for this library if they are in directories next to the library's code rather than having to browse through parallel directory hierarchies. I'm sorry, I'm not thinking like the Unix layout way. I'm thinking like I would like it to be as a user.<br />
<br />
----<br />
It looks weird to have "runtime" as category. I know it means "at run time", but in our Eiffel world, we are used to talk about the "runtime", as the underlying C library.<br />
What about replacing "runtime" by "execution" ?<br />
This way, we would have<br />
*execution<br />
**memory<br />
**process<br />
**reflection<br />
**concurrency<br />
And I am still unconfortable with having "argument parser" under this "runtime/process" (Or even "execution/process"). It might go under "parser". Even if It is more than just a parser, since it also include the source of argument.<br />
<br />
Or we could create an "application" category...<br />
any idea?<br />
<br />
--[[User:Jfiat|Jocelyn]] 11:26, 27 October 2009 (UTC)<br />
<br />
----<br />
I have to say, I hate the word "execution". We have a habit of using alternative names for things so people coming to Eiffel have no idea where to find things. I would stick with runtime for somethings and add another category.<br />
<br />
*runtime<br />
**concurrency<br />
**memory<br />
**reflection<br />
<br />
*application<br />
**argument_parser<br />
<br />
I don't know where the ''process'' library really belongs. I think we need an '''application''' category for application frameworks. I would be fine with putting ''argument_parser'' under '''parser''' but it might not be found.<br />
<br />
Really we need a tag system instead of a tree, which is something integrated into the heart of the library repository idea.<br />
<br />
p.s. I like Eric's idea about segregating aspects of a library; source, documentation, examples, and tests. It would be useful to have a dedicated layout for tools and just consistency in general.<br />
--[[User:Paulb|paulb]] 19:16, 27 October 2009 (UTC)</div>Paulbhttps://dev.eiffel.com/index.php?title=Talk:EiffelVision_Cocoa&diff=13510Talk:EiffelVision Cocoa2009-10-27T18:07:53Z<p>Paulb: New page: I'm not sure what we should do with the retain/release/autorelease situation in Objective-C. An nice option, but a lot or work, would be generate Objective-C classes for Eiffel classes and...</p>
<hr />
<div>I'm not sure what we should do with the retain/release/autorelease situation in Objective-C. An nice option, but a lot or work, would be generate Objective-C classes for Eiffel classes and let the Objective-C GC handle memory management, we do this for .NET We would be limited to targeting 10.5+ but I don't think that is a big drawback because Mac users tend to update more often than say Windows/Linux users do. <br />
<br />
However, changing the code generation is a lot of work, but it would benefit more than just allowing Eiffel code to use the Objective-C GC. A simpler solution might be to implement runtime hooks, which notifies a callback when an object is attached to a variable or it becomes detached from one. This would also benefit EiffelCOM which uses a similar memory management model. For this we utilize the Eiffel GC and DISPOSABLE, but it does cause problems because the objects aren't released until a GC cycle, and in some cases you need the COM object to actually be released immediately.<br />
<br />
--[[User:Paulb|paulb]] 18:07, 27 October 2009 (UTC)</div>Paulbhttps://dev.eiffel.com/index.php?title=EiffelStudio_6.5_Releases&diff=13501EiffelStudio 6.5 Releases2009-10-23T20:02:22Z<p>Paulb: /* 6.5.x */</p>
<hr />
<div>[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}<br />
<br />
= EiffelStudio 6.5.x Releases=<br />
<br />
==6.5.x==<br />
Placeholder for new stuff since last intermediate release. <br />
===New features===<br />
===Improvements===<br />
*studio: Error list tool now displays the file name and position of configuration file parse errors.<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed eweasel test#incr313, test#incr317 and test#incr318 where removal of a convert clause was not taken into account by the compiler.<br />
*compiler: Fixed eweasel test#svalid022 where conversion to a target of a detachable type was not accepted, and also now the compiler will verify that the source of the conversion is always attached. Ensured that the source or the target type mention in a convert clause is attached.<br />
*compiler: Fixed eweasel test#svalid024 where using an inspect clause with static constant access would failed to compile in a descendant class when `full class checking' is enabled.<br />
*compiler: Fixed eweasel test#term156 and test#svalid025 where compiler would crash while compiling code that needs to be regenerated in descendant classes (e.g. code from precondition) involving anchors or formal generic parameters.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.5.8.945 (September 29th 2009)==<br />
===New features===<br />
*{{Red|base: Added the "+" operator on READABLE_STRING_GENERAL.}}<br />
<br />
===Improvements===<br />
* compiler: Supported tracking changes made to a shared library definition file to trigger freeze automatically when there are any modifications to this file.<br />
*preferences: fixed bug#13502: Preference values are not taken into account when searching in Preferences window flat view<br />
*studio: Implemented shortcut F9 to enable/remove breakpoint at current line (cursor) on focused flat formatter (feature relation tool). <br />
*studio: Implemented shortcut Shift+F9 to enable/disable breakpoint at current line (cursor) on focused flat formatter (feature relation tool). <br />
*studio: Implemented shortcut Ctrl+F9 to edit breakpoint at current line (cursor) on focused flat formatter (feature relation tool).<br />
*studio: Recorded targets of recently open projects so that they can be immediately open from the list of recent pojects.<br />
*{{Red|vision2: Improved pick and drop mechanism to not use the `wel_hook.dll'. The visible change is that when the cursor is outside the vision2 application its shape changes depending on what is beneath.}}<br />
*windows: Added official support for Windows SDK 7.0 and betas of Visual Studio/Visual C/C++ Express 2010.<br />
*studio: bug#14849: Implement a "Go to BP Slot" action for debugging. (Shortcut = Ctrl+G on flat formatter.)<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*studio: allowed undoing the first modification made in the diagram tool (see bug#5291).<br />
*studio: prevented useless additio of `Zoom 100%' in the undo/redo list of the diagram tool.<br />
*studio: fixed bug#15984: [sm] Typo in dialog box<br />
*studio: fixed bug#16236: Abort Freezing dialog should have yes/no buttons<br />
*studio: fixed bug#13201: Violation of precondition `not_destroyed' of {EB_VISION_WINDOW}.set_pointer_style<br />
*studio: Fixed bug#16266 which prevented saving of classes in EiffelStudio. The first save would be successful, but none of the one after.<br />
*studio: Fixed bug#16271 where some dialogs will appear in the german language even if locale is english.<br />
*studio: Fixed bug when opening a recent project from EiffelStudio's MRU menu, with a space in the file name, on *nix platforms.<br />
*studio: fixed bug#13003: Sample basic application should print something<br />
*studio: fixed bug#13501: Ctrl+Shift+V pastes text. And other similar shortcut where we now also check that "Shift" is not enabled.<br />
*studio: fixed bug#13184: Vioation of `initialized' of {EB_EXPRESSION_DEFINITION_DIALOG}.eiffel_universe<br />
*studio: fixed bug#13234: Typos in {INTERFACE_NAMES}.l_..._runnin..<br />
*studio: fixed bug#15483: Open layout is disabled even if you have an entry<br />
<br />
*build: Fixed crash of EiffelBuild when loading a project that has a EV_SPIN_BUTTON for which the `text_change_actions' event was connected.<br />
<br />
*docking: fixed bug#16213, bug#16214: Precondition in docking<br />
*docking: fixed bug#16153: Precondition violated Tag: docking_manager_attached in {EB_DEVELOPMENT_WINDOW}.close_all_tools in Eiffel Studio<br />
*docking: fixed bug#4764: Enhancements to how undocked windows work<br />
*docking: fixed bug#13018: Picking class via context menu does not work in mini-toolbar<br />
*docking: fixed bug#13038: Double-click on docked window title bar often undocks instead of maximizing<br />
*docking: fixed bug#13659: Call on Void target in {SD_SAVE_CONFIG_MEDIATOR}.save_one_auto_hide_panel_data<br />
*docking: fixed bug#13178: Violation of precondition `setted' of {EB_SD_COMMAND_TOOL_BAR_BUTTON}.has_position<br />
<br />
*debugger: fixed bug#16195: Debug session with conditional breakpoint causes program to exhaust memory, crash EStudio<br />
*debugger: keep rows selection when disabling several lines in the watch tool<br />
*debugger: Fixed various debugger's issues related to Expanded object (especially about items from SPECIAL of expanded object). <br />
*debugger: Fixed bug#16197: is DEBUG_OUTPUT no longer supported?<br />
<br />
*compiler: Fixed bug on *nix platforms where spaces in project/installation paths failed to create the necessary symbolic links, when using precompiles.<br />
*compiler: Fixed issue with TYPE instances not properly created. It addresses extended eweasel test#melt097.<br />
<br />
===User changes===<br />
*{{Red|arg_parser: `make_hidden' now takes one argument less.}}<br />
<br />
===Developer changes===<br />
<br />
==6.5.8.524 (August 30th 2009)==<br />
===New features===<br />
*{{Red|libraries: added the base extension library that offers some extra functionality to EiffelBase. Namely a SEARCH_TABLE which is basically a HASH_TABLE where keys and items are the same, and sorting facilities for INDEXABLE containers.}}<br />
===Improvements===<br />
*studio: Automatic class licenser can now use license.lic files next to an ECF instead of naming file *.lic after the ECF. Makes it easier for multi-ECF libraries.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*base: Fixed issue with `put' and `extend' from PART_SORTED_SET which had no effect and thus causing a postcondition violation.<br />
*base: Fixed issue with `remove' in BINARY_SEARCH_TREE_SET which would not move the cursor and thus causing an infinite loop in `subtract', `intersect.<br />
*base: Added ability to create a directory recursively.<br />
*testing: Fixed an issue with the Eiffel runtime override of byte code causing some test execution to fail if no code was melted.<br />
*studio: Fixed issue with ES crashing when trying to merge a license, when class contains an empty note clause.<br />
*studio: Fixed issue where project settings would let you add twice the same include file rule.<br />
*studio: Fixed an issue where clicking in the project settings entry to display a dialog and then clicking cancel would show the dialog a second time.<br />
*studio: Fixed bug#14840: Extracted homonyms once, and now Estudio keeps trying to extract them again<br />
*debugger: Fixed bug#5084: I cannot PnD class attributes in the watch window<br />
<br />
===User changes===<br />
*base: Made `clear_all' in STRING_8, STRING_32 and HASH_TABLE obsolete. One has to use `wipe_out' instead.<br />
*{{Red|base: Strengthen precondition of `resize' in STRING_8/STRING_32 to forbid values that would shrink the string content. Use `grow' instead to preserve former `resize' behavior.}}<br />
<br />
===Developer changes===<br />
<br />
==6.5.8.294 (August 17th 2009)==<br />
===New features===<br />
* {{Red|web_browser: Added Web Browser widget {EV_WEB_BROWSER} (see new "web_browser" library) and example project (see example under $ISE_LIBRARY/examples/web_browser)}}<br />
* {{Red|studio: GCC and MSC external compilation errors are now displayed in the error list, with linking to source Eiffel feature when the information is available.}}<br />
<br />
===Improvements===<br />
*studio: Improved error messages for VUAR/VJAR/VBAR errors to mention compatibility instead of just conformance.<br />
*studio: Now double clicking on an ecf file will select the previously compiled target by default.<br />
*ec: Fixed command line compilation to use the current working directory unless -project_path is specified (restoring pre-ecf behavior)<br />
*ec: When an ecf file has been specified with -config, the previously compiled target is chosen as the first option in the compilable target list.<br />
*AutoTest: Improved tag tree for displaying tests by merging view/filter box into one input field<br />
*AutoTest: Potential test classes are traversed asynchronously after each compilation, allowing the user to continue working while tests are found. This also removes the need for special test clusters.<br />
*AutoTest: Improved the way tests are executed. By tagging a test with "execution/isolated" the test process is restarted before and after the test is executed. By tagging a number of tests with a tag "execution/serial", the tagged tests are not executed in parallel. {{Red|Because of these changes, test execution and generation might not completely work in the next release (missing test results/output).}}<br />
*{{Red|AutoTest library: {EQA_TEST_SET}.on_prepare is called during `default_create', which makes it simpler to use attached attributes in void-safe tests.}}<br />
*AutoTest library: Moved actual test routine invocation into {EQA_TEST_SET}.run_test which can be used to nest the test routine call. This is used for example by Vision2 tests to launch the event loop before calling the test routine.<br />
*{{Red|Docking library: Made Smart Docking library (including docking library examples) void-safe}}<br />
*studio: when dropping a library stone inside an editor, it also display sub libraries (among other data)<br />
*studio: Added a context menu "Add Selection To" ... watch tools. This is used to create a new expression using the editor's selection text. (fixed bug#11064)<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*base: Fixed bug#4118 where on .NET `put' had no effect on the actual process environment variables because the API was only available in .NET 2.0 which is what we support at the minimum.<br />
*{{Red|base: Fixed bug in `copy' from HEAP_PRIORITY_QUEUE which would not do anything because it was simply copying itself, not other.}}<br />
*{{Red|base: Fixed bug in `remove' from HEAP_PRIORITY_QUEUE which caused the internal structure to be referenced beyond its bounds.}}<br />
*base: Fixed a bug in {MEMORY}.memory_map which would cause a precondition violation in one of its call.<br />
*serialization: Fixed a bug in SED_INDEPENDENT_DESERIALIZER in the experimental branch where we could get an out of bound access because we incorrectly resized a SPECIAL.<br />
*studio: Fixed bug preventing the an output from being selected on Windows.<br />
*studio: Fixed duplicate output issue when a subsystem activates the outputs tool before showing it.<br />
*studio: Fixed bug preventing the new features dialog from being displayed when using newer syntax.<br />
*EiffelVision: Fixed potential crash with tab navigation code when a key press was sent to a widget that is in the process of being unparented.<br />
*debugger: fixed#16013, now all READABLE_STRING_8/32 and descendant will be displayed as string literal in debugger tools.<br />
*compiler: Fixed eweasel test#final084 where compiler would generate incorrect type at run-time causing some memory corruption or a general failure.<br />
*compiler: Fixed eweasel test#final083 where compiler would crash when inlining certain type of code involving generic classes.<br />
*compiler: Fixed issues in experimental version when introducing `generating_type: TYPE [like Current]' in ANY which was causing a few eweasel tests. Also add new test for bug found with manifest type (eweasel test#melt097 and test#valid257).<br />
*base: Added missing `own_from_pointer' in .NET version of MANAGED_POINTER<br />
*studio: Fixed issue where one could not change an integer based preference entry in EiffelStudio.<br />
*debugger: Fixed bug#16013: IMMUTABLE_STRING objects cannot be viewed as strings<br />
<br />
==6.5.7.9743 (July 13th 2009)==<br />
===New features===<br />
*base: Added `own_from_pointer' in C_STRING.<br />
<br />
===Improvements===<br />
*studio:Made some bug fixes and improvements to the new output tool.<br />
*studio: Added tooltip to precompilation wizard list to show item's ecf file path<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*autotest: Fixed bug#15875 where selecting a test class and choosing run had no effect, now it will run all the test cases defined in that class.<br />
*base: Added missing `own_from_pointer' routine in the .NET version of MANAGED_POINTER<br />
*base: Made TYPE class similar to the classic version.<br />
*studio: Fixed bug#13103: Cannot set Shift+Esc as a shortcut in the preferences dialog.<br />
*studio: Fixed typo reported by bug#13220 in the Metric tool.<br />
*compiler: Fixed issue where one could not debug an application if the `executable_name' specified in the ECF contained the .exe suffix on Windows. This fixes bug#11834.<br />
<br />
===User changes===<br />
*compiler: the indexing value '''volatile''' previously introduced has been renamed into '''transient'''.<br />
<br />
===Developer changes===<br />
<br />
==6.5.7.9500==<br />
===New features===<br />
*{{Red|base: Changed {ANY}.generating_type to return an instance of TYPE}}<br />
*{{Red|runtime: Added support for transient attributes for store/retrieve. A transient attribute is an attribute which is not stored at runtime and for which its absence in the retrieval system has no effect.}}<br />
* compiler: Supported detection and validity error report for VSRP(3) (the root procedure is not precondition-free) (see test#vsrp301).<br />
<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
===User changes===<br />
===Developer changes===</div>Paulbhttps://dev.eiffel.com/index.php?title=EiffelStudio_6.5_Releases&diff=13475EiffelStudio 6.5 Releases2009-09-24T21:17:50Z<p>Paulb: /* Bug fixes */</p>
<hr />
<div>[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}<br />
<br />
= EiffelStudio 6.5.x Releases=<br />
<br />
==6.5.x==<br />
Placeholder for new stuff since last intermediate release. <br />
===New features===<br />
===Improvements===<br />
compiler: Supported tracking changes made to a shared library definition file to trigger freeze automatically when there are any modifications to this file.<br />
*preferences: fixed bug#13502: Preference values are not taken into account when searching in Preferences window flat view<br />
*studio: Implemented shortcut F9 to enable/remove breakpoint at current line (cursor) on focused flat formatter (feature relation tool). <br />
*studio: Implemented shortcut Shift+F9 to enable/disable breakpoint at current line (cursor) on focused flat formatter (feature relation tool). <br />
*studio: Implemented shortcut Ctrl+F9 to edit breakpoint at current line (cursor) on focused flat formatter (feature relation tool).<br />
*studio: Recorded targets of recently open projects so that they can be immediately open from the list of recent pojects.<br />
* Added official support for Windows SDK 7.0 and betas of Visual Studio/Visual C/C++ Express 2010.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*studio: allowed undoing the first modification made in the diagram tool (see bug#5291).<br />
*studio: prevented useless additio of `Zoom 100%' in the undo/redo list of the diagram tool.<br />
*studio: fixed bug#15984: [sm] Typo in dialog box<br />
*studio: fixed bug#16236: Abort Freezing dialog should have yes/no buttons<br />
*studio: fixed bug#13201: Violation of precondition `not_destroyed' of {EB_VISION_WINDOW}.set_pointer_style<br />
*docking: fixed bug#16213, bug#16214: Precondition in docking<br />
*docking: fixed bug#16153: Precondition violated Tag: docking_manager_attached in {EB_DEVELOPMENT_WINDOW}.close_all_tools in Eiffel Studio<br />
*docking: fixed bug#4764: Enhancements to how undocked windows work<br />
*docking: fixed bug#13018: Picking class via context menu does not work in mini-toolbar<br />
*docking: fixed bug#13038: Double-click on docked window title bar often undocks instead of maximizing<br />
*docking: fixed bug#13659: Call on Void target in {SD_SAVE_CONFIG_MEDIATOR}.save_one_auto_hide_panel_data<br />
*docking: fixed bug#13178: Violation of precondition `setted' of {EB_SD_COMMAND_TOOL_BAR_BUTTON}.has_position<br />
*debugger: fixed bug#16195: Debug session with conditional breakpoint causes program to exhaust memory, crash EStudio<br />
*debugger: keep rows selection when disabling several lines in the watch tool<br />
*studio: fixed bug#13003: Sample basic application should print something<br />
*studio: fixed bug#13501: Ctrl+Shift+V pastes text. And other similar shortcut where we now also check that "Shift" is not enabled.<br />
*studio: fixed bug#13184: Vioation of `initialized' of {EB_EXPRESSION_DEFINITION_DIALOG}.eiffel_universe<br />
*studio: fixed bug#13234: Typos in {INTERFACE_NAMES}.l_..._runnin..<br />
*debugger: Fixed various debugger's issues related to Expanded object (especially about items from SPECIAL of expanded object). <br />
*debugger: Fixed bug#16197: is DEBUG_OUTPUT no longer supported?<br />
*compiler: Fixed bug on *nix platforms where spaces in project/installation paths failed to create the necessary symbolic links, when using precompiles.<br />
*studio: Fixed bug when opening a recent project from EiffelStudio's MRU menu, with a space in the file name, on *nix platforms.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.5.8.524 (August 30th 2009)==<br />
===New features===<br />
*{{Red|libraries: added the base extension library that offers some extra functionality to EiffelBase. Namely a SEARCH_TABLE which is basically a HASH_TABLE where keys and items are the same, and sorting facilities for INDEXABLE containers.}}<br />
===Improvements===<br />
*studio: Automatic class licenser can now use license.lic files next to an ECF instead of naming file *.lic after the ECF. Makes it easier for multi-ECF libraries.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*base: Fixed issue with `put' and `extend' from PART_SORTED_SET which had no effect and thus causing a postcondition violation.<br />
*base: Fixed issue with `remove' in BINARY_SEARCH_TREE_SET which would not move the cursor and thus causing an infinite loop in `subtract', `intersect.<br />
*base: Added ability to create a directory recursively.<br />
*testing: Fixed an issue with the Eiffel runtime override of byte code causing some test execution to fail if no code was melted.<br />
*studio: Fixed issue with ES crashing when trying to merge a license, when class contains an empty note clause.<br />
*studio: Fixed issue where project settings would let you add twice the same include file rule.<br />
*studio: Fixed an issue where clicking in the project settings entry to display a dialog and then clicking cancel would show the dialog a second time.<br />
*studio: Fixed bug#14840: Extracted homonyms once, and now Estudio keeps trying to extract them again<br />
*debugger: Fixed bug#5084: I cannot PnD class attributes in the watch window<br />
<br />
===User changes===<br />
*base: Made `clear_all' in STRING_8, STRING_32 and HASH_TABLE obsolete. One has to use `wipe_out' instead.<br />
*{{Red|base: Strengthen precondition of `resize' in STRING_8/STRING_32 to forbid values that would shrink the string content. Use `grow' instead to preserve former `resize' behavior.}}<br />
<br />
===Developer changes===<br />
<br />
==6.5.8.294 (August 17th 2009)==<br />
===New features===<br />
* {{Red|web_browser: Added Web Browser widget {EV_WEB_BROWSER} (see new "web_browser" library) and example project (see example under $ISE_LIBRARY/examples/web_browser)}}<br />
* {{Red|studio: GCC and MSC external compilation errors are now displayed in the error list, with linking to source Eiffel feature when the information is available.}}<br />
<br />
===Improvements===<br />
*studio: Improved error messages for VUAR/VJAR/VBAR errors to mention compatibility instead of just conformance.<br />
*studio: Now double clicking on an ecf file will select the previously compiled target by default.<br />
*ec: Fixed command line compilation to use the current working directory unless -project_path is specified (restoring pre-ecf behavior)<br />
*ec: When an ecf file has been specified with -config, the previously compiled target is chosen as the first option in the compilable target list.<br />
*AutoTest: Improved tag tree for displaying tests by merging view/filter box into one input field<br />
*AutoTest: Potential test classes are traversed asynchronously after each compilation, allowing the user to continue working while tests are found. This also removes the need for special test clusters.<br />
*AutoTest: Improved the way tests are executed. By tagging a test with "execution/isolated" the test process is restarted before and after the test is executed. By tagging a number of tests with a tag "execution/serial", the tagged tests are not executed in parallel. {{Red|Because of these changes, test execution and generation might not completely work in the next release (missing test results/output).}}<br />
*{{Red|AutoTest library: {EQA_TEST_SET}.on_prepare is called during `default_create', which makes it simpler to use attached attributes in void-safe tests.}}<br />
*AutoTest library: Moved actual test routine invocation into {EQA_TEST_SET}.run_test which can be used to nest the test routine call. This is used for example by Vision2 tests to launch the event loop before calling the test routine.<br />
*{{Red|Docking library: Made Smart Docking library (including docking library examples) void-safe}}<br />
*studio: when dropping a library stone inside an editor, it also display sub libraries (among other data)<br />
*studio: Added a context menu "Add Selection To" ... watch tools. This is used to create a new expression using the editor's selection text. (fixed bug#11064)<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*base: Fixed bug#4118 where on .NET `put' had no effect on the actual process environment variables because the API was only available in .NET 2.0 which is what we support at the minimum.<br />
*{{Red|base: Fixed bug in `copy' from HEAP_PRIORITY_QUEUE which would not do anything because it was simply copying itself, not other.}}<br />
*{{Red|base: Fixed bug in `remove' from HEAP_PRIORITY_QUEUE which caused the internal structure to be referenced beyond its bounds.}}<br />
*base: Fixed a bug in {MEMORY}.memory_map which would cause a precondition violation in one of its call.<br />
*serialization: Fixed a bug in SED_INDEPENDENT_DESERIALIZER in the experimental branch where we could get an out of bound access because we incorrectly resized a SPECIAL.<br />
*studio: Fixed bug preventing the an output from being selected on Windows.<br />
*studio: Fixed duplicate output issue when a subsystem activates the outputs tool before showing it.<br />
*studio: Fixed bug preventing the new features dialog from being displayed when using newer syntax.<br />
*EiffelVision: Fixed potential crash with tab navigation code when a key press was sent to a widget that is in the process of being unparented.<br />
*debugger: fixed#16013, now all READABLE_STRING_8/32 and descendant will be displayed as string literal in debugger tools.<br />
*compiler: Fixed eweasel test#final084 where compiler would generate incorrect type at run-time causing some memory corruption or a general failure.<br />
*compiler: Fixed eweasel test#final083 where compiler would crash when inlining certain type of code involving generic classes.<br />
*compiler: Fixed issues in experimental version when introducing `generating_type: TYPE [like Current]' in ANY which was causing a few eweasel tests. Also add new test for bug found with manifest type (eweasel test#melt097 and test#valid257).<br />
*base: Added missing `own_from_pointer' in .NET version of MANAGED_POINTER<br />
*studio: Fixed issue where one could not change an integer based preference entry in EiffelStudio.<br />
*debugger: Fixed bug#16013: IMMUTABLE_STRING objects cannot be viewed as strings<br />
<br />
==6.5.7.9743 (July 13th 2009)==<br />
===New features===<br />
*base: Added `own_from_pointer' in C_STRING.<br />
<br />
===Improvements===<br />
*studio:Made some bug fixes and improvements to the new output tool.<br />
*studio: Added tooltip to precompilation wizard list to show item's ecf file path<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*autotest: Fixed bug#15875 where selecting a test class and choosing run had no effect, now it will run all the test cases defined in that class.<br />
*base: Added missing `own_from_pointer' routine in the .NET version of MANAGED_POINTER<br />
*base: Made TYPE class similar to the classic version.<br />
*studio: Fixed bug#13103: Cannot set Shift+Esc as a shortcut in the preferences dialog.<br />
*studio: Fixed typo reported by bug#13220 in the Metric tool.<br />
*compiler: Fixed issue where one could not debug an application if the `executable_name' specified in the ECF contained the .exe suffix on Windows. This fixes bug#11834.<br />
<br />
===User changes===<br />
*compiler: the indexing value '''volatile''' previously introduced has been renamed into '''transient'''.<br />
<br />
===Developer changes===<br />
<br />
==6.5.7.9500==<br />
===New features===<br />
*{{Red|base: Changed {ANY}.generating_type to return an instance of TYPE}}<br />
*{{Red|runtime: Added support for transient attributes for store/retrieve. A transient attribute is an attribute which is not stored at runtime and for which its absence in the retrieval system has no effect.}}<br />
* compiler: Supported detection and validity error report for VSRP(3) (the root procedure is not precondition-free) (see test#vsrp301).<br />
<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
===User changes===<br />
===Developer changes===</div>Paulbhttps://dev.eiffel.com/index.php?title=EiffelStudio_6.5_Releases&diff=13474EiffelStudio 6.5 Releases2009-09-24T18:45:48Z<p>Paulb: /* Bug fixes */</p>
<hr />
<div>[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}<br />
<br />
= EiffelStudio 6.5.x Releases=<br />
<br />
==6.5.x==<br />
Placeholder for new stuff since last intermediate release. <br />
===New features===<br />
===Improvements===<br />
compiler: Supported tracking changes made to a shared library definition file to trigger freeze automatically when there are any modifications to this file.<br />
*preferences: fixed bug#13502: Preference values are not taken into account when searching in Preferences window flat view<br />
*studio: Implemented shortcut F9 to enable/remove breakpoint at current line (cursor) on focused flat formatter (feature relation tool). <br />
*studio: Implemented shortcut Shift+F9 to enable/disable breakpoint at current line (cursor) on focused flat formatter (feature relation tool). <br />
*studio: Implemented shortcut Ctrl+F9 to edit breakpoint at current line (cursor) on focused flat formatter (feature relation tool).<br />
*studio: Recorded targets of recently open projects so that they can be immediately open from the list of recent pojects.<br />
* Added official support for Windows SDK 7.0 and betas of Visual Studio/Visual C/C++ Express 2010.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*studio: allowed undoing the first modification made in the diagram tool (see bug#5291).<br />
*studio: prevented useless additio of `Zoom 100%' in the undo/redo list of the diagram tool.<br />
*studio: fixed bug#15984: [sm] Typo in dialog box<br />
*studio: fixed bug#16236: Abort Freezing dialog should have yes/no buttons<br />
*studio: fixed bug#13201: Violation of precondition `not_destroyed' of {EB_VISION_WINDOW}.set_pointer_style<br />
*docking: fixed bug#16213, bug#16214: Precondition in docking<br />
*docking: fixed bug#16153: Precondition violated Tag: docking_manager_attached in {EB_DEVELOPMENT_WINDOW}.close_all_tools in Eiffel Studio<br />
*docking: fixed bug#4764: Enhancements to how undocked windows work<br />
*docking: fixed bug#13018: Picking class via context menu does not work in mini-toolbar<br />
*docking: fixed bug#13038: Double-click on docked window title bar often undocks instead of maximizing<br />
*docking: fixed bug#13659: Call on Void target in {SD_SAVE_CONFIG_MEDIATOR}.save_one_auto_hide_panel_data<br />
*docking: fixed bug#13178: Violation of precondition `setted' of {EB_SD_COMMAND_TOOL_BAR_BUTTON}.has_position<br />
*debugger: fixed bug#16195: Debug session with conditional breakpoint causes program to exhaust memory, crash EStudio<br />
*debugger: keep rows selection when disabling several lines in the watch tool<br />
*studio: fixed bug#13003: Sample basic application should print something<br />
*studio: fixed bug#13501: Ctrl+Shift+V pastes text. And other similar shortcut where we now also check that "Shift" is not enabled.<br />
*studio: fixed bug#13184: Vioation of `initialized' of {EB_EXPRESSION_DEFINITION_DIALOG}.eiffel_universe<br />
*studio: fixed bug#13234: Typos in {INTERFACE_NAMES}.l_..._runnin..<br />
*debugger: Fixed various debugger's issues related to Expanded object (especially about items from SPECIAL of expanded object). <br />
*debugger: Fixed bug#16197: is DEBUG_OUTPUT no longer supported?<br />
*compiler: Fixed bug on *nix platforms where spaces in project/installation paths failed to create the necessary symbolic links, when using precompiles.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.5.8.524 (August 30th 2009)==<br />
===New features===<br />
*{{Red|libraries: added the base extension library that offers some extra functionality to EiffelBase. Namely a SEARCH_TABLE which is basically a HASH_TABLE where keys and items are the same, and sorting facilities for INDEXABLE containers.}}<br />
===Improvements===<br />
*studio: Automatic class licenser can now use license.lic files next to an ECF instead of naming file *.lic after the ECF. Makes it easier for multi-ECF libraries.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*base: Fixed issue with `put' and `extend' from PART_SORTED_SET which had no effect and thus causing a postcondition violation.<br />
*base: Fixed issue with `remove' in BINARY_SEARCH_TREE_SET which would not move the cursor and thus causing an infinite loop in `subtract', `intersect.<br />
*base: Added ability to create a directory recursively.<br />
*testing: Fixed an issue with the Eiffel runtime override of byte code causing some test execution to fail if no code was melted.<br />
*studio: Fixed issue with ES crashing when trying to merge a license, when class contains an empty note clause.<br />
*studio: Fixed issue where project settings would let you add twice the same include file rule.<br />
*studio: Fixed an issue where clicking in the project settings entry to display a dialog and then clicking cancel would show the dialog a second time.<br />
*studio: Fixed bug#14840: Extracted homonyms once, and now Estudio keeps trying to extract them again<br />
*debugger: Fixed bug#5084: I cannot PnD class attributes in the watch window<br />
<br />
===User changes===<br />
*base: Made `clear_all' in STRING_8, STRING_32 and HASH_TABLE obsolete. One has to use `wipe_out' instead.<br />
*{{Red|base: Strengthen precondition of `resize' in STRING_8/STRING_32 to forbid values that would shrink the string content. Use `grow' instead to preserve former `resize' behavior.}}<br />
<br />
===Developer changes===<br />
<br />
==6.5.8.294 (August 17th 2009)==<br />
===New features===<br />
* {{Red|web_browser: Added Web Browser widget {EV_WEB_BROWSER} (see new "web_browser" library) and example project (see example under $ISE_LIBRARY/examples/web_browser)}}<br />
* {{Red|studio: GCC and MSC external compilation errors are now displayed in the error list, with linking to source Eiffel feature when the information is available.}}<br />
<br />
===Improvements===<br />
*studio: Improved error messages for VUAR/VJAR/VBAR errors to mention compatibility instead of just conformance.<br />
*studio: Now double clicking on an ecf file will select the previously compiled target by default.<br />
*ec: Fixed command line compilation to use the current working directory unless -project_path is specified (restoring pre-ecf behavior)<br />
*ec: When an ecf file has been specified with -config, the previously compiled target is chosen as the first option in the compilable target list.<br />
*AutoTest: Improved tag tree for displaying tests by merging view/filter box into one input field<br />
*AutoTest: Potential test classes are traversed asynchronously after each compilation, allowing the user to continue working while tests are found. This also removes the need for special test clusters.<br />
*AutoTest: Improved the way tests are executed. By tagging a test with "execution/isolated" the test process is restarted before and after the test is executed. By tagging a number of tests with a tag "execution/serial", the tagged tests are not executed in parallel. {{Red|Because of these changes, test execution and generation might not completely work in the next release (missing test results/output).}}<br />
*{{Red|AutoTest library: {EQA_TEST_SET}.on_prepare is called during `default_create', which makes it simpler to use attached attributes in void-safe tests.}}<br />
*AutoTest library: Moved actual test routine invocation into {EQA_TEST_SET}.run_test which can be used to nest the test routine call. This is used for example by Vision2 tests to launch the event loop before calling the test routine.<br />
*{{Red|Docking library: Made Smart Docking library (including docking library examples) void-safe}}<br />
*studio: when dropping a library stone inside an editor, it also display sub libraries (among other data)<br />
*studio: Added a context menu "Add Selection To" ... watch tools. This is used to create a new expression using the editor's selection text. (fixed bug#11064)<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*base: Fixed bug#4118 where on .NET `put' had no effect on the actual process environment variables because the API was only available in .NET 2.0 which is what we support at the minimum.<br />
*{{Red|base: Fixed bug in `copy' from HEAP_PRIORITY_QUEUE which would not do anything because it was simply copying itself, not other.}}<br />
*{{Red|base: Fixed bug in `remove' from HEAP_PRIORITY_QUEUE which caused the internal structure to be referenced beyond its bounds.}}<br />
*base: Fixed a bug in {MEMORY}.memory_map which would cause a precondition violation in one of its call.<br />
*serialization: Fixed a bug in SED_INDEPENDENT_DESERIALIZER in the experimental branch where we could get an out of bound access because we incorrectly resized a SPECIAL.<br />
*studio: Fixed bug preventing the an output from being selected on Windows.<br />
*studio: Fixed duplicate output issue when a subsystem activates the outputs tool before showing it.<br />
*studio: Fixed bug preventing the new features dialog from being displayed when using newer syntax.<br />
*EiffelVision: Fixed potential crash with tab navigation code when a key press was sent to a widget that is in the process of being unparented.<br />
*debugger: fixed#16013, now all READABLE_STRING_8/32 and descendant will be displayed as string literal in debugger tools.<br />
*compiler: Fixed eweasel test#final084 where compiler would generate incorrect type at run-time causing some memory corruption or a general failure.<br />
*compiler: Fixed eweasel test#final083 where compiler would crash when inlining certain type of code involving generic classes.<br />
*compiler: Fixed issues in experimental version when introducing `generating_type: TYPE [like Current]' in ANY which was causing a few eweasel tests. Also add new test for bug found with manifest type (eweasel test#melt097 and test#valid257).<br />
*base: Added missing `own_from_pointer' in .NET version of MANAGED_POINTER<br />
*studio: Fixed issue where one could not change an integer based preference entry in EiffelStudio.<br />
*debugger: Fixed bug#16013: IMMUTABLE_STRING objects cannot be viewed as strings<br />
<br />
==6.5.7.9743 (July 13th 2009)==<br />
===New features===<br />
*base: Added `own_from_pointer' in C_STRING.<br />
<br />
===Improvements===<br />
*studio:Made some bug fixes and improvements to the new output tool.<br />
*studio: Added tooltip to precompilation wizard list to show item's ecf file path<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*autotest: Fixed bug#15875 where selecting a test class and choosing run had no effect, now it will run all the test cases defined in that class.<br />
*base: Added missing `own_from_pointer' routine in the .NET version of MANAGED_POINTER<br />
*base: Made TYPE class similar to the classic version.<br />
*studio: Fixed bug#13103: Cannot set Shift+Esc as a shortcut in the preferences dialog.<br />
*studio: Fixed typo reported by bug#13220 in the Metric tool.<br />
*compiler: Fixed issue where one could not debug an application if the `executable_name' specified in the ECF contained the .exe suffix on Windows. This fixes bug#11834.<br />
<br />
===User changes===<br />
*compiler: the indexing value '''volatile''' previously introduced has been renamed into '''transient'''.<br />
<br />
===Developer changes===<br />
<br />
==6.5.7.9500==<br />
===New features===<br />
*{{Red|base: Changed {ANY}.generating_type to return an instance of TYPE}}<br />
*{{Red|runtime: Added support for transient attributes for store/retrieve. A transient attribute is an attribute which is not stored at runtime and for which its absence in the retrieval system has no effect.}}<br />
* compiler: Supported detection and validity error report for VSRP(3) (the root procedure is not precondition-free) (see test#vsrp301).<br />
<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
===User changes===<br />
===Developer changes===</div>Paulbhttps://dev.eiffel.com/index.php?title=EiffelStudio_6.5_Releases&diff=13468EiffelStudio 6.5 Releases2009-09-22T18:42:33Z<p>Paulb: /* 6.5.x */</p>
<hr />
<div>[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}<br />
<br />
= EiffelStudio 6.5.x Releases=<br />
<br />
==6.5.x==<br />
Placeholder for new stuff since last intermediate release. <br />
===New features===<br />
===Improvements===<br />
compiler: Supported tracking changes made to a shared library definition file to trigger freeze automatically when there are any modifications to this file.<br />
*preferences: fixed bug#13502: Preference values are not taken into account when searching in Preferences window flat view<br />
*studio: Implemented shortcut F9 to enable/remove breakpoint at current line (cursor) on focused flat formatter (feature relation tool). <br />
*studio: Implemented shortcut Shift+F9 to enable/disable breakpoint at current line (cursor) on focused flat formatter (feature relation tool). <br />
*studio: Implemented shortcut Ctrl+F9 to edit breakpoint at current line (cursor) on focused flat formatter (feature relation tool).<br />
*studio: Recorded targets of recently open projects so that they can be immediately open from the list of recent pojects.<br />
* Added official support for Windows SDK 7.0 and betas of Visual Studio/Visual C/C++ Express 2010.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*studio: allowed undoing the first modification made in the diagram tool (see bug#5291).<br />
*studio: prevented useless additio of `Zoom 100%' in the undo/redo list of the diagram tool.<br />
*studio: fixed bug#15984: [sm] Typo in dialog box<br />
*studio: fixed bug#16236: Abort Freezing dialog should have yes/no buttons<br />
*docking: fixed bug#16213, bug#16214: Precondition in docking<br />
*docking: fixed bug#16153: Precondition violated Tag: docking_manager_attached in {EB_DEVELOPMENT_WINDOW}.close_all_tools in Eiffel Studio<br />
*docking: fixed bug#4764: Enhancements to how undocked windows work<br />
*docking: fixed bug#13018: Picking class via context menu does not work in mini-toolbar<br />
*docking: fixed bug#13038: Double-click on docked window title bar often undocks instead of maximizing<br />
*docking: fixed bug#13659: Call on Void target in {SD_SAVE_CONFIG_MEDIATOR}.save_one_auto_hide_panel_data<br />
*docking: fixed bug#13178: Violation of precondition `setted' of {EB_SD_COMMAND_TOOL_BAR_BUTTON}.has_position<br />
*debugger: fixed bug#16195: Debug session with conditional breakpoint causes program to exhaust memory, crash EStudio<br />
*debugger: keep rows selection when disabling several lines in the watch tool<br />
*studio: fixed bug#13003: Sample basic application should print something<br />
*studio: fixed bug#13501: Ctrl+Shift+V pastes text. And other similar shortcut where we now also check that "Shift" is not enabled.<br />
*studio: fixed bug#13184: Vioation of `initialized' of {EB_EXPRESSION_DEFINITION_DIALOG}.eiffel_universe<br />
*studio: fixed bug#13234: Typos in {INTERFACE_NAMES}.l_..._runnin..<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.5.8.524 (August 30th 2009)==<br />
===New features===<br />
*{{Red|libraries: added the base extension library that offers some extra functionality to EiffelBase. Namely a SEARCH_TABLE which is basically a HASH_TABLE where keys and items are the same, and sorting facilities for INDEXABLE containers.}}<br />
===Improvements===<br />
*studio: Automatic class licenser can now use license.lic files next to an ECF instead of naming file *.lic after the ECF. Makes it easier for multi-ECF libraries.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*base: Fixed issue with `put' and `extend' from PART_SORTED_SET which had no effect and thus causing a postcondition violation.<br />
*base: Fixed issue with `remove' in BINARY_SEARCH_TREE_SET which would not move the cursor and thus causing an infinite loop in `subtract', `intersect.<br />
*base: Added ability to create a directory recursively.<br />
*testing: Fixed an issue with the Eiffel runtime override of byte code causing some test execution to fail if no code was melted.<br />
*studio: Fixed issue with ES crashing when trying to merge a license, when class contains an empty note clause.<br />
*studio: Fixed issue where project settings would let you add twice the same include file rule.<br />
*studio: Fixed an issue where clicking in the project settings entry to display a dialog and then clicking cancel would show the dialog a second time.<br />
*studio: Fixed bug#14840: Extracted homonyms once, and now Estudio keeps trying to extract them again<br />
*debugger: Fixed bug#5084: I cannot PnD class attributes in the watch window<br />
<br />
===User changes===<br />
*base: Made `clear_all' in STRING_8, STRING_32 and HASH_TABLE obsolete. One has to use `wipe_out' instead.<br />
*{{Red|base: Strengthen precondition of `resize' in STRING_8/STRING_32 to forbid values that would shrink the string content. Use `grow' instead to preserve former `resize' behavior.}}<br />
<br />
===Developer changes===<br />
<br />
==6.5.8.294 (August 17th 2009)==<br />
===New features===<br />
* {{Red|web_browser: Added Web Browser widget {EV_WEB_BROWSER} (see new "web_browser" library) and example project (see example under $ISE_LIBRARY/examples/web_browser)}}<br />
* {{Red|studio: GCC and MSC external compilation errors are now displayed in the error list, with linking to source Eiffel feature when the information is available.}}<br />
<br />
===Improvements===<br />
*studio: Improved error messages for VUAR/VJAR/VBAR errors to mention compatibility instead of just conformance.<br />
*studio: Now double clicking on an ecf file will select the previously compiled target by default.<br />
*ec: Fixed command line compilation to use the current working directory unless -project_path is specified (restoring pre-ecf behavior)<br />
*ec: When an ecf file has been specified with -config, the previously compiled target is chosen as the first option in the compilable target list.<br />
*AutoTest: Improved tag tree for displaying tests by merging view/filter box into one input field<br />
*AutoTest: Potential test classes are traversed asynchronously after each compilation, allowing the user to continue working while tests are found. This also removes the need for special test clusters.<br />
*AutoTest: Improved the way tests are executed. By tagging a test with "execution/isolated" the test process is restarted before and after the test is executed. By tagging a number of tests with a tag "execution/serial", the tagged tests are not executed in parallel. {{Red|Because of these changes, test execution and generation might not completely work in the next release (missing test results/output).}}<br />
*{{Red|AutoTest library: {EQA_TEST_SET}.on_prepare is called during `default_create', which makes it simpler to use attached attributes in void-safe tests.}}<br />
*AutoTest library: Moved actual test routine invocation into {EQA_TEST_SET}.run_test which can be used to nest the test routine call. This is used for example by Vision2 tests to launch the event loop before calling the test routine.<br />
*{{Red|Docking library: Made Smart Docking library (including docking library examples) void-safe}}<br />
*studio: when dropping a library stone inside an editor, it also display sub libraries (among other data)<br />
*studio: Added a context menu "Add Selection To" ... watch tools. This is used to create a new expression using the editor's selection text. (fixed bug#11064)<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*base: Fixed bug#4118 where on .NET `put' had no effect on the actual process environment variables because the API was only available in .NET 2.0 which is what we support at the minimum.<br />
*{{Red|base: Fixed bug in `copy' from HEAP_PRIORITY_QUEUE which would not do anything because it was simply copying itself, not other.}}<br />
*{{Red|base: Fixed bug in `remove' from HEAP_PRIORITY_QUEUE which caused the internal structure to be referenced beyond its bounds.}}<br />
*base: Fixed a bug in {MEMORY}.memory_map which would cause a precondition violation in one of its call.<br />
*serialization: Fixed a bug in SED_INDEPENDENT_DESERIALIZER in the experimental branch where we could get an out of bound access because we incorrectly resized a SPECIAL.<br />
*studio: Fixed bug preventing the an output from being selected on Windows.<br />
*studio: Fixed duplicate output issue when a subsystem activates the outputs tool before showing it.<br />
*studio: Fixed bug preventing the new features dialog from being displayed when using newer syntax.<br />
*EiffelVision: Fixed potential crash with tab navigation code when a key press was sent to a widget that is in the process of being unparented.<br />
*debugger: fixed#16013, now all READABLE_STRING_8/32 and descendant will be displayed as string literal in debugger tools.<br />
*compiler: Fixed eweasel test#final084 where compiler would generate incorrect type at run-time causing some memory corruption or a general failure.<br />
*compiler: Fixed eweasel test#final083 where compiler would crash when inlining certain type of code involving generic classes.<br />
*compiler: Fixed issues in experimental version when introducing `generating_type: TYPE [like Current]' in ANY which was causing a few eweasel tests. Also add new test for bug found with manifest type (eweasel test#melt097 and test#valid257).<br />
*base: Added missing `own_from_pointer' in .NET version of MANAGED_POINTER<br />
*studio: Fixed issue where one could not change an integer based preference entry in EiffelStudio.<br />
*debugger: Fixed bug#16013: IMMUTABLE_STRING objects cannot be viewed as strings<br />
<br />
==6.5.7.9743 (July 13th 2009)==<br />
===New features===<br />
*base: Added `own_from_pointer' in C_STRING.<br />
<br />
===Improvements===<br />
*studio:Made some bug fixes and improvements to the new output tool.<br />
*studio: Added tooltip to precompilation wizard list to show item's ecf file path<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*autotest: Fixed bug#15875 where selecting a test class and choosing run had no effect, now it will run all the test cases defined in that class.<br />
*base: Added missing `own_from_pointer' routine in the .NET version of MANAGED_POINTER<br />
*base: Made TYPE class similar to the classic version.<br />
*studio: Fixed bug#13103: Cannot set Shift+Esc as a shortcut in the preferences dialog.<br />
*studio: Fixed typo reported by bug#13220 in the Metric tool.<br />
*compiler: Fixed issue where one could not debug an application if the `executable_name' specified in the ECF contained the .exe suffix on Windows. This fixes bug#11834.<br />
<br />
===User changes===<br />
*compiler: the indexing value '''volatile''' previously introduced has been renamed into '''transient'''.<br />
<br />
===Developer changes===<br />
<br />
==6.5.7.9500==<br />
===New features===<br />
*{{Red|base: Changed {ANY}.generating_type to return an instance of TYPE}}<br />
*{{Red|runtime: Added support for transient attributes for store/retrieve. A transient attribute is an attribute which is not stored at runtime and for which its absence in the retrieval system has no effect.}}<br />
* compiler: Supported detection and validity error report for VSRP(3) (the root procedure is not precondition-free) (see test#vsrp301).<br />
<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
===User changes===<br />
===Developer changes===</div>Paulbhttps://dev.eiffel.com/index.php?title=Main_Page&diff=13467Main Page2009-09-22T18:41:23Z<p>Paulb: Canged to 6.5</p>
<hr />
<div>[[Category:General]]__NOTOC__<br />
<h1 class="firstHeading">EiffelStudio Integrated Development Environment</h1><br />
<br />
[[Image:EiffelStudioScreenshot.png|thumb|250px|right|EiffelStudio IDE ([http://eiffel.com/products/studio/screenshots.html more screenshots]) ]]<br />
<br />
Welcome to the central resource for EiffelStudio developers and contributors.<br />
==News==<br />
*''August 2009'': Checks out the new [http://www.bertrandmeyer.com Bertrand Meyer's blog]<br />
*''29 June 2009'': EiffelStudio 6.4 is available for downloads at http://www.eiffel.com/downloads<br />
<br />
==Background==<br />
<br />
EiffelStudio is an advanced commercial-grade IDE for the [http://en.wikipedia.org/wiki/Eiffel_programming_language Eiffel programming language]. It is maintained and developed mostly by [http://www.eiffel.com Eiffel Software] and hosted at the [http://se.inf.ethz.ch/ Chair of Software Engineering] at [http://www.ethz.ch/ ETH Zurich].<br />
<br />
On April 5th, 2006, Eiffel Software relicensed the EiffelStudio product under the [[Gnu Public License]]. Eiffel Software still offers a commercial variant. Both versions share the same source code.<br />
<br />
EiffelStudio is a full-featured IDE offering the following features, many of them unique:<br />
<br />
* Complete compiler for the Eiffel programming language, with Design By Contract (DBC) support and both high compile-time speed and high-performance executables, based on the Melting Ice Technology.<br />
* Full portability (including graphics) across Windows, MacOS X, Linux, *BSD, Solaris and other operating systems<br />
* Smart code editor<br />
* Sophisticated multi-view browsing and viewing facilities<br />
* Interactive debugger<br />
* Graphical modeling tool for UML and BON with full roundtrip<br />
* Refactoring support<br />
* GUI development tool (EiffelBuild) and fully portable GUI library (EiffelVision)<br />
* Many other libraries of reusable component.<br />
<br />
The Eiffel compiler creates C code that is then handed to a standard C compiler. As a result, Eiffel programs have a run-time performance comparable to those directly written in C or C++, but with the benefits of an advanced object-oriented model and strong typing. EiffelStudio uses a highly efficient compacting garbage collector to free the developer from the burden of memory management.<br />
<br />
<center>If you want to know more about the unique features of Eiffel and EiffelStudio, check out our [[Reasons for using Eiffel]] page.</center><br />
<br />
{|style="font-size:80%;" bgcolor=white|<br />
{| cellspacing=8 width="100%"<br />
|- valign="top"<br />
|width="50%" bgcolor="#f6f9fb" style="border:1px solid #8f8f8f;padding:0 .5em .5em .5em;"|<br />
<br />
== Getting Started ==<br />
<br />
* [[Downloads]]<br />
* [[EiffelStudio 6.5 Releases|Changelog of 6.5 (release branch)]]<br />
* [http://docs.eiffel.com/eiffelstudio/installation/studio Installing EiffelStudio]<br />
* [[Compiling Hello World]]<br />
|width="50%" bgcolor="#f6f9fb" style="border:1px solid #8f8f8f;padding:0 .5em .5em .5em;"|<br />
<br />
== Working with EiffelStudio ==<br />
<br />
* [[Frequently Asked Questions]]<br />
* [[Eiffel Glossary]]<br />
* [[Eiffel Compilation Explained]]<br />
* [[EiffelStudio Wish List]]<br />
<br />
|- valign="top"<br />
|width="50%" bgcolor="#f6f9fb" style="border:1px solid #8f8f8f;padding:0 .5em .5em .5em;"|<br />
== Contributing! ==<br />
<br />
* [[:Category:Projects|How to contribute: the Projects page]]<br />
* [[:Category:Testing|EiffelStudio testing process: you can participate!]]<br />
* [[EiffelStudio 6.5 Releases|Changelog of latest development version, currently 6.5 (development trunk)]]<br />
* [[Repository|Getting the source: Subversion repository]]<br />
* [[Compiling EiffelStudio]]<br />
* [[:Category:Tools|Developer's tools]]<br />
* [[Language_Roadmap|Language roadmap]]<br />
* [[Environment_Roadmap|Environment roadmap]]<br />
* [[Design_and_coding_rules|Design and coding rules]]<br />
|width="50%" bgcolor="#f6f9fb" style="border:1px solid #8f8f8f;padding:0 .5em .5em .5em;"|<br />
<br />
== Community ==<br />
<br />
* [http://www.eiffelroom.org EiffelRoom]<br />
* [[Spread_the_word|Spread the word]]<br />
* [[Eiffel Sites and Links]]<br />
* [[Mailing Lists]]<br />
* [[:Category:News|News]]<br />
<br />
|}</div>Paulbhttps://dev.eiffel.com/index.php?title=EiffelStudio_6.5_Releases&diff=13335EiffelStudio 6.5 Releases2009-08-28T00:06:59Z<p>Paulb: /* Improvements */</p>
<hr />
<div>[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}<br />
<br />
= EiffelStudio 6.5.x Releases=<br />
<br />
==6.5.x==<br />
Placeholder for new stuff since last intermediate release. <br />
===New features===<br />
*{{Red|libraries: added the base extension library that offers some extra functionality to EiffelBase. Namely a SEARCH_TABLE which is basically a HASH_TABLE where keys and items are the same, and sorting facilities for INDEXABLE containers.}}<br />
===Improvements===<br />
studio: Automatic class licenser can now use license.lic files next to an ECF instead of naming file *.lic after the ECF. Makes it easier for multi-ECF libraries.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*base: Fixed issue with `put' and `extend' from PART_SORTED_SET which had no effect and thus causing a postcondition violation.<br />
*base: Fixed issue with `remove' in BINARY_SEARCH_TREE_SET which would not move the cursor and thus causing an infinite loop in `subtract', `intersect.<br />
*base: Added ability to create a directory recursively.<br />
*testing: Fixed an issue with the Eiffel runtime override of byte code causing some test execution to fail if no code was melted.<br />
*studio: Fixed issue with ES crashing when trying to merge a license, when class contains an empty note clause.<br />
*studio: Fixed issue where project settings would let you add twice the same include file rule.<br />
*studio: Fixed an issue where clicking in the project settings entry to display a dialog and then clicking cancel would show the dialog a second time.<br />
<br />
===User changes===<br />
*base: Made `clear_all' in STRING_8, STRING_32 and HASH_TABLE obsolete. One has to use `wipe_out' instead.<br />
*{{Red|base: Strengthen precondition of `resize' in STRING_8/STRING_32 to forbid values that would shrink the string content. Use `grow' instead to preserve former `resize' behavior.}}<br />
<br />
===Developer changes===<br />
<br />
==6.5.8.294 (August 17th 2009)==<br />
===New features===<br />
* {{Red|web_browser: Added Web Browser widget {EV_WEB_BROWSER} (see new "web_browser" library) and example project (see example under $ISE_LIBRARY/examples/web_browser)}}<br />
* {{Red|studio: GCC and MSC external compilation errors are now displayed in the error list, with linking to source Eiffel feature when the information is available.}}<br />
<br />
===Improvements===<br />
*studio: Improved error messages for VUAR/VJAR/VBAR errors to mention compatibility instead of just conformance.<br />
*studio: Now double clicking on an ecf file will select the previously compiled target by default.<br />
*ec: Fixed command line compilation to use the current working directory unless -project_path is specified (restoring pre-ecf behavior)<br />
*ec: When an ecf file has been specified with -config, the previously compiled target is chosen as the first option in the compilable target list.<br />
*AutoTest: Improved tag tree for displaying tests by merging view/filter box into one input field<br />
*AutoTest: Potential test classes are traversed asynchronously after each compilation, allowing the user to continue working while tests are found. This also removes the need for special test clusters.<br />
*AutoTest: Improved the way tests are executed. By tagging a test with "execution/isolated" the test process is restarted before and after the test is executed. By tagging a number of tests with a tag "execution/serial", the tagged tests are not executed in parallel. {{Red|Because of these changes, test execution and generation might not completely work in the next release (missing test results/output).}}<br />
*{{Red|AutoTest library: {EQA_TEST_SET}.on_prepare is called during `default_create', which makes it simpler to use attached attributes in void-safe tests.}}<br />
*AutoTest library: Moved actual test routine invocation into {EQA_TEST_SET}.run_test which can be used to nest the test routine call. This is used for example by Vision2 tests to launch the event loop before calling the test routine.<br />
*{{Red|Docking library: Made Smart Docking library (including docking library examples) void-safe}}<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*base: Fixed bug#4118 where on .NET `put' had no effect on the actual process environment variables because the API was only available in .NET 2.0 which is what we support at the minimum.<br />
*{{Red|base: Fixed bug in `copy' from HEAP_PRIORITY_QUEUE which would not do anything because it was simply copying itself, not other.}}<br />
*{{Red|base: Fixed bug in `remove' from HEAP_PRIORITY_QUEUE which caused the internal structure to be referenced beyond its bounds.}}<br />
*base: Fixed a bug in {MEMORY}.memory_map which would cause a precondition violation in one of its call.<br />
*serialization: Fixed a bug in SED_INDEPENDENT_DESERIALIZER in the experimental branch where we could get an out of bound access because we incorrectly resized a SPECIAL.<br />
*studio: Fixed bug preventing the an output from being selected on Windows.<br />
*studio: Fixed duplicate output issue when a subsystem activates the outputs tool before showing it.<br />
*studio: Fixed bug preventing the new features dialog from being displayed when using newer syntax.<br />
*EiffelVision: Fixed potential crash with tab navigation code when a key press was sent to a widget that is in the process of being unparented.<br />
*debugger: fixed#16013, now all READABLE_STRING_8/32 and descendant will be displayed as string literal in debugger tools.<br />
*compiler: Fixed eweasel test#final084 where compiler would generate incorrect type at run-time causing some memory corruption or a general failure.<br />
*compiler: Fixed eweasel test#final083 where compiler would crash when inlining certain type of code involving generic classes.<br />
*compiler: Fixed issues in experimental version when introducing `generating_type: TYPE [like Current]' in ANY which was causing a few eweasel tests. Also add new test for bug found with manifest type (eweasel test#melt097 and test#valid257).<br />
*base: Added missing `own_from_pointer' in .NET version of MANAGED_POINTER<br />
*studio: Fixed issue where one could not change an integer based preference entry in EiffelStudio.<br />
<br />
==6.5.7.9743 (July 13th 2009)==<br />
===New features===<br />
*base: Added `own_from_pointer' in C_STRING.<br />
<br />
===Improvements===<br />
*studio:Made some bug fixes and improvements to the new output tool.<br />
*studio: Added tooltip to precompilation wizard list to show item's ecf file path<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*autotest: Fixed bug#15875 where selecting a test class and choosing run had no effect, now it will run all the test cases defined in that class.<br />
*base: Added missing `own_from_pointer' routine in the .NET version of MANAGED_POINTER<br />
*base: Made TYPE class similar to the classic version.<br />
*studio: Fixed bug#13103: Cannot set Shift+Esc as a shortcut in the preferences dialog.<br />
*studio: Fixed typo reported by bug#13220 in the Metric tool.<br />
*compiler: Fixed issue where one could not debug an application if the `executable_name' specified in the ECF contained the .exe suffix on Windows. This fixes bug#11834.<br />
<br />
===User changes===<br />
*compiler: the indexing value '''volatile''' previously introduced has been renamed into '''transient'''.<br />
<br />
===Developer changes===<br />
<br />
==6.5.7.9500==<br />
===New features===<br />
*{{Red|base: Changed {ANY}.generating_type to return an instance of TYPE}}<br />
*{{Red|runtime: Added support for transient attributes for store/retrieve. A transient attribute is an attribute which is not stored at runtime and for which its absence in the retrieval system has no effect.}}<br />
* compiler: Supported detection and validity error report for VSRP(3) (the root procedure is not precondition-free) (see test#vsrp301).<br />
<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
===User changes===<br />
===Developer changes===</div>Paulbhttps://dev.eiffel.com/index.php?title=EiffelStudio_6.5_Releases&diff=13332EiffelStudio 6.5 Releases2009-08-27T21:09:41Z<p>Paulb: </p>
<hr />
<div>[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}<br />
<br />
= EiffelStudio 6.5.x Releases=<br />
<br />
==6.5.x==<br />
Placeholder for new stuff since last intermediate release. <br />
===New features===<br />
*{{Red|libraries: added the base extension library that offers some extra functionality to EiffelBase. Namely a SEARCH_TABLE which is basically a HASH_TABLE where keys and items are the same, and sorting facilities for INDEXABLE containers.}}<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*base: Fixed issue with `put' and `extend' from PART_SORTED_SET which had no effect and thus causing a postcondition violation.<br />
*base: Fixed issue with `remove' in BINARY_SEARCH_TREE_SET which would not move the cursor and thus causing an infinite loop in `subtract', `intersect.<br />
*testing: Fixed an issue with the Eiffel runtime override of byte code causing some test execution to fail if no code was melted.<br />
*studio: Fixed issue with ES crashing when trying to merge a license, when class contains an empty note clause.<br />
<br />
===User changes===<br />
*base: Made `clear_all' in STRING_8, STRING_32 and HASH_TABLE obsolete. One has to use `wipe_out' instead.<br />
*{{Red|base: Strengthen precondition of `resize' in STRING_8/STRING_32 to forbid values that would shrink the string content. Use `grow' instead to preserve former `resize' behavior.}}<br />
<br />
===Developer changes===<br />
<br />
==6.5.8.294 (August 17th 2009)==<br />
===New features===<br />
* {{Red|web_browser: Added Web Browser widget {EV_WEB_BROWSER} (see new "web_browser" library) and example project (see example under $ISE_LIBRARY/examples/web_browser)}}<br />
* {{Red|studio: GCC and MSC external compilation errors are now displayed in the error list, with linking to source Eiffel feature when the information is available.}}<br />
<br />
===Improvements===<br />
*studio: Improved error messages for VUAR/VJAR/VBAR errors to mention compatibility instead of just conformance.<br />
*studio: Now double clicking on an ecf file will select the previously compiled target by default.<br />
*ec: Fixed command line compilation to use the current working directory unless -project_path is specified (restoring pre-ecf behavior)<br />
*ec: When an ecf file has been specified with -config, the previously compiled target is chosen as the first option in the compilable target list.<br />
*AutoTest: Improved tag tree for displaying tests by merging view/filter box into one input field<br />
*AutoTest: Potential test classes are traversed asynchronously after each compilation, allowing the user to continue working while tests are found. This also removes the need for special test clusters.<br />
*AutoTest: Improved the way tests are executed. By tagging a test with "execution/isolated" the test process is restarted before and after the test is executed. By tagging a number of tests with a tag "execution/serial", the tagged tests are not executed in parallel. {{Red|Because of these changes, test execution and generation might not completely work in the next release (missing test results/output).}}<br />
*{{Red|AutoTest library: {EQA_TEST_SET}.on_prepare is called during `default_create', which makes it simpler to use attached attributes in void-safe tests.}}<br />
*AutoTest library: Moved actual test routine invocation into {EQA_TEST_SET}.run_test which can be used to nest the test routine call. This is used for example by Vision2 tests to launch the event loop before calling the test routine.<br />
*{{Red|Docking library: Made Smart Docking library (including docking library examples) void-safe}}<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*base: Fixed bug#4118 where on .NET `put' had no effect on the actual process environment variables because the API was only available in .NET 2.0 which is what we support at the minimum.<br />
*{{Red|base: Fixed bug in `copy' from HEAP_PRIORITY_QUEUE which would not do anything because it was simply copying itself, not other.}}<br />
*{{Red|base: Fixed bug in `remove' from HEAP_PRIORITY_QUEUE which caused the internal structure to be referenced beyond its bounds.}}<br />
*base: Fixed a bug in {MEMORY}.memory_map which would cause a precondition violation in one of its call.<br />
*serialization: Fixed a bug in SED_INDEPENDENT_DESERIALIZER in the experimental branch where we could get an out of bound access because we incorrectly resized a SPECIAL.<br />
*studio: Fixed bug preventing the an output from being selected on Windows.<br />
*studio: Fixed duplicate output issue when a subsystem activates the outputs tool before showing it.<br />
*studio: Fixed bug preventing the new features dialog from being displayed when using newer syntax.<br />
*EiffelVision: Fixed potential crash with tab navigation code when a key press was sent to a widget that is in the process of being unparented.<br />
*debugger: fixed#16013, now all READABLE_STRING_8/32 and descendant will be displayed as string literal in debugger tools.<br />
*compiler: Fixed eweasel test#final084 where compiler would generate incorrect type at run-time causing some memory corruption or a general failure.<br />
*compiler: Fixed eweasel test#final083 where compiler would crash when inlining certain type of code involving generic classes.<br />
*compiler: Fixed issues in experimental version when introducing `generating_type: TYPE [like Current]' in ANY which was causing a few eweasel tests. Also add new test for bug found with manifest type (eweasel test#melt097 and test#valid257).<br />
*base: Added missing `own_from_pointer' in .NET version of MANAGED_POINTER<br />
*studio: Fixed issue where one could not change an integer based preference entry in EiffelStudio.<br />
<br />
==6.5.7.9743 (July 13th 2009)==<br />
===New features===<br />
*base: Added `own_from_pointer' in C_STRING.<br />
<br />
===Improvements===<br />
*studio:Made some bug fixes and improvements to the new output tool.<br />
*studio: Added tooltip to precompilation wizard list to show item's ecf file path<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*autotest: Fixed bug#15875 where selecting a test class and choosing run had no effect, now it will run all the test cases defined in that class.<br />
*base: Added missing `own_from_pointer' routine in the .NET version of MANAGED_POINTER<br />
*base: Made TYPE class similar to the classic version.<br />
*studio: Fixed bug#13103: Cannot set Shift+Esc as a shortcut in the preferences dialog.<br />
*studio: Fixed typo reported by bug#13220 in the Metric tool.<br />
*compiler: Fixed issue where one could not debug an application if the `executable_name' specified in the ECF contained the .exe suffix on Windows. This fixes bug#11834.<br />
<br />
===User changes===<br />
*compiler: the indexing value '''volatile''' previously introduced has been renamed into '''transient'''.<br />
<br />
===Developer changes===<br />
<br />
==6.5.7.9500==<br />
===New features===<br />
*{{Red|base: Changed {ANY}.generating_type to return an instance of TYPE}}<br />
*{{Red|runtime: Added support for transient attributes for store/retrieve. A transient attribute is an attribute which is not stored at runtime and for which its absence in the retrieval system has no effect.}}<br />
* compiler: Supported detection and validity error report for VSRP(3) (the root procedure is not precondition-free) (see test#vsrp301).<br />
<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
===User changes===<br />
===Developer changes===</div>Paulbhttps://dev.eiffel.com/index.php?title=Eiffel_Code_Comments&diff=13306Eiffel Code Comments2009-08-26T19:13:42Z<p>Paulb: Added mark up information</p>
<hr />
<div>[[Category:Coding Style Guidelines]]<br />
==Comment Mark Up ==<br />
The Eiffel compiler and EiffelStudio's code browsing tools support a special, lite weight mark up in comments and string for referencing class and features. EiffelStudio's code browsing tools utilize this mark up to better facility code navigation and browsing. In addition, marked up comments and strings will be examined and altered when performing a class or feature rename refactor.<br />
<br />
===Syntax===<br />
The syntax for marking up classes and features is very compact, to ensure retained legibility. You'll see no need for XML or other types of verbose mark up found in other languages, which can impede comment's very nature of a quick reference.<br />
<br />
To mark up a class reference, surround the class name in and open ('''{''') and matching closing ('''}''') brace:<br />
<br />
<e><br />
-- See {DEBUG_OUTPUT} for more information.<br />
</e><br />
<br />
To mark up a feature reference, implemented in the same class or parent, surround the feature name in and single back quote (`) and matching closing sing quote ('):<br />
<br />
<e><br />
-- See `debug_output' for more information.<br />
</e><br />
<br />
In the case where a reference to a feature no accessible to the containing class directly, a combination of the class reference mark up and a feature name, sans quotation marks:<br />
<br />
<e><br />
-- See {DEBUG_OUTPUT}.debug_output for more information.<br />
</e><br />
<br />
The rules that apply for comments, as described above, can also be utilized in any manifest or verbatim string:<br />
<br />
<e><br />
note<br />
description: "Augments searching facilities of {STRING_8}"<br />
</e><br />
<br />
==Precursor Comments==<br />
<br />
{{Version|6.2}}<br />
<br />
Precursor comments declarations are a new mechanism added to EiffelStudio 6.2 to replicate a parent feature declaration's comments in the redefined/effective feature. The purpose of the mechanism is to reduce comment duplication, ease comment maintenance and facilitate augmentation.<br />
<br />
For the purpose of demonstration, take the following deferred interface:<br />
<e><br />
deferred class<br />
BASE<br />
<br />
feature -- Query<br />
<br />
test (a_arg: INTEGER): BOOLEAN<br />
-- Comments for a feature.<br />
--<br />
-- `a_arg': An integer value.<br />
-- `Result': Could be True or False.<br />
deferred<br />
end<br />
<br />
end<br />
</e><br />
<br />
And effective implementation of it:<br />
<br />
<e><br />
class<br />
TEST<br />
<br />
inherit<br />
BASE<br />
<br />
feature -- Query<br />
<br />
test (a_arg: INTEGER): BOOLEAN<br />
-- <Precursor><br />
do<br />
end<br />
<br />
end<br />
</e><br />
<br />
<e>TEST</e> instead of replicating the comment makes use of the precursor comment declaration (<e>-- <Precursor></e>), which supporting code browsing tool will expand to show the precursor feature's contracts. The declaration is optional but is only supported for existing code out there that do not have comments due to lax implementation. Even though optional, it is strongly recommended that you use <e>-- <Precursor></e> comment declaration, as it indicates to any reader the feature is a redefinition or effective implementation of a parent feature declaration.<br />
<br />
=== Comment Augmentation ===<br />
The precursor comments declaration also supports augmentation. All a comment author has to do is to write additional comments before and/or after the precursor comment declaration. As a requirement, the precursor comment declaration must appear on a separate line for no other purpose except for clarity. Failure to do so will results in the rendering of the comments as they are declared in the feature, i.e. with <e>-- <Precursor></e> as is.<br />
<br />
<e><br />
test (a_arg: INTEGER): BOOLEAN<br />
-- Comments before the original comments from {BASE}.<br />
--<br />
-- <Precursor><br />
--<br />
-- Some additional comments.<br />
do<br />
end<br />
</e><br />
<br />
Using the code browsing facilities of [[EiffelStudio]] the reader will be presented with an expanded comment, for the effective version of feature <e>test</e>, that now read<br />
<br />
<e><br />
-- Comments before the original comments from {BASE}.<br />
--<br />
-- Comments for a feature.<br />
--<br />
-- `a_arg': An integer value.<br />
-- `Result': Could be True or False.<br />
--<br />
-- Some additional comments.<br />
</e><br />
<br />
For clarity it is a good idea to separate the agumented comments from the precursor comment declaration. Using the same example above but removing the one line spacing above and below the precursor comment declaration would results in the following, less readable comment:<br />
<br />
<e><br />
-- Comments before the original comments from {BASE}.<br />
-- Comments for a feature.<br />
--<br />
-- `a_arg': An integer value.<br />
-- `Result': Could be True or False.<br />
-- Some additional comments.<br />
</e><br />
<br />
However, that said, it is pure discretion to use additional spacing or not. Some situation do not call for, other do and some might (when the original comment changes.)<br />
<br />
=== Multiple Redefinitions and Selection ===<br />
With Eiffel supporting multiple inheritance, a scenario will arise where two inherited redefine features are joined in a descendant.<br />
<br />
By default the precursor comment declaration is replaced by the first located inherited feature comment, which may cause documentation irregularities. Because precursor comments are not signification to compilation they are not checked during compilation, such as is the way with the use of <e>Precursor</e>, resulting a compile time error when not selecting the parent class to call into. This can cause documentation irregularities because there is no guarantee that they feature comments viewed one project will be the same in another.<br />
<br />
To facilitate correct documentation the precursor comment declaration can use an optional select clause, just like using <e>Precursor</e> in the Eiffel code.<br />
<br />
<e><br />
f (a_arg: INTEGER): BOOLEAN<br />
-- <Precursor {BASE}><br />
do<br />
end<br />
</e><br />
<br />
This will have exactly the same effect as using <e>-- <Precursor></e> when <e>f</e> is made effective/redefined from a single parent. However, when making effective/redefining from multiple parents then comments will come from the parent class declaration in <e>BASE</e>.<br />
<br />
Again, because precursor comments do not affect compilation they are not checked at compile time. Specifying an incorrect class will yield a warning message in [[EiffelStudio]]'s code browsing tools, to the effect:<br />
<br />
<e><br />
-- Unable to retrieve the comments from redefinition of {CLASS_NAME}.<br />
</e><br />
<br />
=== Library Documentation Generation ===<br />
Precursor comments are supported in all code browsing/documentation facilities, whether is be the integrated [[Contract Viewer]], the [[Feature Relation Tool]] or the Eiffel documentation generation facilities. Using <e>-- <Precursor></e> will ensure the comments are brought up from a parent declaration.</div>Paulbhttps://dev.eiffel.com/index.php?title=Eiffel_Code_Comments&diff=13305Eiffel Code Comments2009-08-26T17:54:47Z<p>Paulb: /* Library Documentation Generation */</p>
<hr />
<div>[[Category:Coding Style Guidelines]]<br />
==Precursor Comments==<br />
<br />
{{Version|6.2}}<br />
<br />
Precursor comments declarations are a new mechanism added to EiffelStudio 6.2 to replicate a parent feature declaration's comments in the redefined/effective feature. The purpose of the mechanism is to reduce comment duplication, ease comment maintenance and facilitate augmentation.<br />
<br />
For the purpose of demonstration, take the following deferred interface:<br />
<e><br />
deferred class<br />
BASE<br />
<br />
feature -- Query<br />
<br />
test (a_arg: INTEGER): BOOLEAN<br />
-- Comments for a feature.<br />
--<br />
-- `a_arg': An integer value.<br />
-- `Result': Could be True or False.<br />
deferred<br />
end<br />
<br />
end<br />
</e><br />
<br />
And effective implementation of it:<br />
<br />
<e><br />
class<br />
TEST<br />
<br />
inherit<br />
BASE<br />
<br />
feature -- Query<br />
<br />
test (a_arg: INTEGER): BOOLEAN<br />
-- <Precursor><br />
do<br />
end<br />
<br />
end<br />
</e><br />
<br />
<e>TEST</e> instead of replicating the comment makes use of the precursor comment declaration (<e>-- <Precursor></e>), which supporting code browsing tool will expand to show the precursor feature's contracts. The declaration is optional but is only supported for existing code out there that do not have comments due to lax implementation. Even though optional, it is strongly recommended that you use <e>-- <Precursor></e> comment declaration, as it indicates to any reader the feature is a redefinition or effective implementation of a parent feature declaration.<br />
<br />
=== Comment Augmentation ===<br />
The precursor comments declaration also supports augmentation. All a comment author has to do is to write additional comments before and/or after the precursor comment declaration. As a requirement, the precursor comment declaration must appear on a separate line for no other purpose except for clarity. Failure to do so will results in the rendering of the comments as they are declared in the feature, i.e. with <e>-- <Precursor></e> as is.<br />
<br />
<e><br />
test (a_arg: INTEGER): BOOLEAN<br />
-- Comments before the original comments from {BASE}.<br />
--<br />
-- <Precursor><br />
--<br />
-- Some additional comments.<br />
do<br />
end<br />
</e><br />
<br />
Using the code browsing facilities of [[EiffelStudio]] the reader will be presented with an expanded comment, for the effective version of feature <e>test</e>, that now read<br />
<br />
<e><br />
-- Comments before the original comments from {BASE}.<br />
--<br />
-- Comments for a feature.<br />
--<br />
-- `a_arg': An integer value.<br />
-- `Result': Could be True or False.<br />
--<br />
-- Some additional comments.<br />
</e><br />
<br />
For clarity it is a good idea to separate the agumented comments from the precursor comment declaration. Using the same example above but removing the one line spacing above and below the precursor comment declaration would results in the following, less readable comment:<br />
<br />
<e><br />
-- Comments before the original comments from {BASE}.<br />
-- Comments for a feature.<br />
--<br />
-- `a_arg': An integer value.<br />
-- `Result': Could be True or False.<br />
-- Some additional comments.<br />
</e><br />
<br />
However, that said, it is pure discretion to use additional spacing or not. Some situation do not call for, other do and some might (when the original comment changes.)<br />
<br />
=== Multiple Redefinitions and Selection ===<br />
With Eiffel supporting multiple inheritance, a scenario will arise where two inherited redefine features are joined in a descendant.<br />
<br />
By default the precursor comment declaration is replaced by the first located inherited feature comment, which may cause documentation irregularities. Because precursor comments are not signification to compilation they are not checked during compilation, such as is the way with the use of <e>Precursor</e>, resulting a compile time error when not selecting the parent class to call into. This can cause documentation irregularities because there is no guarantee that they feature comments viewed one project will be the same in another.<br />
<br />
To facilitate correct documentation the precursor comment declaration can use an optional select clause, just like using <e>Precursor</e> in the Eiffel code.<br />
<br />
<e><br />
f (a_arg: INTEGER): BOOLEAN<br />
-- <Precursor {BASE}><br />
do<br />
end<br />
</e><br />
<br />
This will have exactly the same effect as using <e>-- <Precursor></e> when <e>f</e> is made effective/redefined from a single parent. However, when making effective/redefining from multiple parents then comments will come from the parent class declaration in <e>BASE</e>.<br />
<br />
Again, because precursor comments do not affect compilation they are not checked at compile time. Specifying an incorrect class will yield a warning message in [[EiffelStudio]]'s code browsing tools, to the effect:<br />
<br />
<e><br />
-- Unable to retrieve the comments from redefinition of {CLASS_NAME}.<br />
</e><br />
<br />
=== Library Documentation Generation ===<br />
Precursor comments are supported in all code browsing/documentation facilities, whether is be the integrated [[Contract Viewer]], the [[Feature Relation Tool]] or the Eiffel documentation generation facilities. Using <e>-- <Precursor></e> will ensure the comments are brought up from a parent declaration.</div>Paulbhttps://dev.eiffel.com/index.php?title=Talk:Library_Categorization&diff=13215Talk:Library Categorization2009-08-20T23:31:55Z<p>Paulb: </p>
<hr />
<div>Instead of gui_design, gui_graph, ...<br />
I would prefer<br />
* gui<br />
** design<br />
** graph<br />
** ..<br />
<br />
argument_parser would be better as<br />
* parse<br />
** argument<br />
<br />
About Gobo, it could be exploded into kernel, structure, time, parse, lexical, xml, ... But we can not do that, so what about adding a category "Package", or "Framework" <br />
<br />
--[[User:Jfiat|Jocelyn]] 08:12, 13 August 2009 (UTC)<br />
<br />
----<br />
I would suggest the following 2-layer structure (if there is a new name, the old one is written in parentheses, in particular, ''something''_extension is not very meaningful):<br />
* base: Kernel library classes, data structure, reflection, I/O <br />
* concurrency<br />
** process: Facility to start and follow processes <br />
** thread: Threading in Eiffel <br />
** cgi (web): CGI facility for Eiffel<br />
* external: interface to the external software<br />
** ? (api_wrapper): Make it easy to call C routines from dynamically loaded shared libraries <br />
** com: COM technology <br />
** java (Eiffel2Java): Calling Java from Eiffel <br />
* gobo: Gobo <br />
* gui<br />
** docking: Facility to have a customizable UI. <br />
** event: Low level mechanism to receive a UI event when a file/pipe has something new. <br />
** graph: Representation of graph in UI (See diagram tool in Eiffel Studio). <br />
** vision2: Platform independent UI toolkit <br />
** ? (vision2_extension): Extension to Vision2 <br />
** wel: UI toolkit for Windows <br />
* storage<br />
** memory (memory_analyzer): Memory analysis<br />
** preferences: Facility to store user preferences<br />
** store: Relational database access<br />
* text<br />
** argument (argument_parser): Parsing the command line arguments of a program <br />
** diff: Diff and patch facilities <br />
** encoding: Transforming text in one encoding to another encoding <br />
** i18n: Internationalization library: <br />
** lex: lexical analysis <br />
** parse: Parsing: <br />
** uuid: UUID generation facility <br />
* util<br />
** ? (gobo_extension): ISE gobo extensions <br />
** net: Networking library <br />
** testing: Testing facility <br />
** time: Time facility <br />
<br />
--[[User:Alexander Kogtenkov|Alexander Kogtenkov]] 15:52, 18 August 2009 (UTC)<br />
<br />
----<br />
<br />
Instead of how about '''Interop'''?<br />
<br />
--[[User:Paulb|paulb]] 23:29, 18 August 2009 (UTC)<br />
<br />
----<br />
<br />
To comment Alexander's message:<br />
Given the importance of the internet today, it sounds weird to have EiffelNet under "Utils"<br />
Let's add a "Network" category ... <br />
Then, we could add twitter, jabber, eventually Eiffel Web?<br />
<br />
--[[User:Jfiat|Jocelyn]] 05:59, 19 August 2009 (UTC)<br />
<br />
----<br />
<br />
"Preferences" under UI/interface looks weird to me. If I were looking for preferences lib, I would search under "data" or "database" or "storage", but not in "ui". However, the pref lib also has Graphical components. In final, ... we should allow more than one category for a lib.<br />
<br />
--[[User:Jfiat|Jocelyn]] 06:24, 19 August 2009 (UTC)<br />
<br />
----<br />
'''Language Interfaces''' looks too long for me as well. In fact here we are talking more about interfacing to the external software, not to the particular language, as, for example, COM is a technology and not a specific language. '''Interop''' is associated for me with .NET... Just a few other possibilities:<br />
* software<br />
* call<br />
Also, ''api_loader'' sounds too generic. Shall it be ''library_loader'' or even ''library_accessor'' instead?<br />
<br />
Would it make sense to merge '''data''' and '''data_structures''' into '''data''' with subnodes '''database''' and '''adt'''? If not, it might make sense to rename '''data''' into '''persistency''' or something like that. Also, does ''event'' library belong to ADT? According to the description it's more about GUI and IO, so it could be moved to '''ui''' section.<br />
<br />
There is some inconsistency in naming as both singular and plural nouns are used. Probably it's better to stick to the same naming convention and use (as in Eiffel) only singular forms ('''utility''' instead of '''utilities''', etc.).<br />
<br />
--[[User:Alexander Kogtenkov|Alexander Kogtenkov]] 06:59, 19 August 2009 (UTC)<br />
<br />
----<br />
--[[User:Ericb|Ericb]] 07:51, 19 August 2009 (UTC): For the ''event'' library, what about the category '''pattern'''?<br />
<br />
About singular vs. plural, I'm all for singular names as well. I noticed in the some libraries that there are folders ''example''. That's good. But in some others we can find ''tests''. In order to be consistent, everything should be singular.<br />
<br />
----<br />
'''vision2_extension''' should be put in '''vision2''', only that vision2_extension.ecf can be put beside vision2.ecf. To find '''argument_parser''', I would first go to '''text''' rather than '''process''' (agree with Alexander).<br />
<br />
For the categorization, in general, we should make it as extensible as possible for not only existing libraries but also for coming ones. For example, Video/Audio, Security/Encryption, 3D Graphics and so on that are missing ones. Some of them will be put in new folders, others will be put into existing folders. <br />
<br />
For this reason, I think '''ui'''/'''gui''' is not a good name for general graphics stuff, '''graphics''' is better instead. We would suggest something like this:<br />
* graphics<br />
** drawing <br />
*** graph: Representation of graph in UI (See diagram tool in EiffelStudio)<br />
*** OpenGL ''(fictional)''<br />
*** DirectX ''(fictional)''<br />
** ui<br />
*** docking: Facility to have a customizable UI<br />
*** vision2: Platform independent UI toolkit<br />
*** vision2_extension: Extension to Vision2<br />
*** wel: UI toolkit for Windows <br />
* media ''(fictional)''<br />
** video<br />
** audio<br />
* security ''(fictional)''<br />
--[[User:Ted|Ted]] 03:27, 20 August 2009 (UTC)<br />
----<br />
<br />
One item that has not been discussed is what happens with the example project corresponding to libraries. The proposed library structure allows for contrib or unsupported libraries which may have examples to. I suggest we model the examples to match the library structure hierarchy.<br />
<br />
--[[User:Paulb|paulb]] 23:31, 20 August 2009 (UTC)<br />
----</div>Paulbhttps://dev.eiffel.com/index.php?title=Talk:Library_Categorization&diff=13179Talk:Library Categorization2009-08-18T23:29:30Z<p>Paulb: </p>
<hr />
<div>Instead of gui_design, gui_graph, ...<br />
I would prefer<br />
* gui<br />
** design<br />
** graph<br />
** ..<br />
<br />
argument_parser would be better as<br />
* parse<br />
** argument<br />
<br />
About Gobo, it could be exploded into kernel, structure, time, parse, lexical, xml, ... But we can not do that, so what about adding a category "Package", or "Framework" <br />
<br />
--[[User:Jfiat|Jocelyn]] 08:12, 13 August 2009 (UTC)<br />
<br />
----<br />
I would suggest the following 2-layer structure (if there is a new name, the old one is written in parentheses, in particular, ''something''_extension is not very meaningful):<br />
* base: Kernel library classes, data structure, reflection, I/O <br />
* concurrency<br />
** process: Facility to start and follow processes <br />
** thread: Threading in Eiffel <br />
** cgi (web): CGI facility for Eiffel<br />
* external: interface to the external software<br />
** ? (api_wrapper): Make it easy to call C routines from dynamically loaded shared libraries <br />
** com: COM technology <br />
** java (Eiffel2Java): Calling Java from Eiffel <br />
* gobo: Gobo <br />
* gui<br />
** docking: Facility to have a customizable UI. <br />
** event: Low level mechanism to receive a UI event when a file/pipe has something new. <br />
** graph: Representation of graph in UI (See diagram tool in Eiffel Studio). <br />
** vision2: Platform independent UI toolkit <br />
** ? (vision2_extension): Extension to Vision2 <br />
** wel: UI toolkit for Windows <br />
* storage<br />
** memory (memory_analyzer): Memory analysis<br />
** preferences: Facility to store user preferences<br />
** store: Relational database access<br />
* text<br />
** argument (argument_parser): Parsing the command line arguments of a program <br />
** diff: Diff and patch facilities <br />
** encoding: Transforming text in one encoding to another encoding <br />
** i18n: Internationalization library: <br />
** lex: lexical analysis <br />
** parse: Parsing: <br />
** uuid: UUID generation facility <br />
* util<br />
** ? (gobo_extension): ISE gobo extensions <br />
** net: Networking library <br />
** testing: Testing facility <br />
** time: Time facility <br />
<br />
--[[User:Alexander Kogtenkov|Alexander Kogtenkov]] 15:52, 18 August 2009 (UTC)<br />
<br />
----<br />
<br />
Instead of '''Language Interfaces''' how about '''Interop'''?<br />
<br />
--[[User:Paulb|paulb]] 23:29, 18 August 2009 (UTC)</div>Paulbhttps://dev.eiffel.com/index.php?title=EiffelStudio_6.5_Releases&diff=13136EiffelStudio 6.5 Releases2009-08-12T16:41:40Z<p>Paulb: /* New features */</p>
<hr />
<div>[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}<br />
<br />
= EiffelStudio 6.5.x Releases=<br />
<br />
==6.5.x==<br />
Placeholder for new stuff since last intermediate release. <br />
===New features===<br />
<br />
* {{Red|web_browser: Added Web Browser widget {EV_WEB_BROWSER} (see new "web_browser" library) and example project (see example under $ISE_LIBRARY/examples/web_browser)}}<br />
* {{Red|studio: GCC and MSC external compilation errors are now displayed in the error list, with linking to source Eiffel feature when the information is available.}}<br />
<br />
===Improvements===<br />
*studio: Improved error messages for VUAR/VJAR/VBAR errors to mention compatibility instead of just conformance.<br />
*studio: Now double clicking on an ecf file will select the previously compiled target by default.<br />
*ec: Fixed command line compilation to use the current working directory unless -project_path is specified (restoring pre-ecf behavior)<br />
*ec: When an ecf file has been specified with -config, the previously compiled target is chosen as the first option in the compilable target list.<br />
*AutoTest: Improved tag tree for displaying tests by merging view/filter box into one input field<br />
*AutoTest: Potential test classes are traversed asynchronously after each compilation, allowing the user to continue working while tests are found. This also removes the need for special test clusters.<br />
*{{Red|AutoTest library: {EQA_TEST_SET}.on_prepare is called during `default_create', which makes it simpler to use attached attributes in void-safe tests.}}<br />
*AutoTest library: Moved actual test routine invocation into {EQA_TEST_SET}.run_test which can be used to nest the test routine call. This is used for example by Vision2 tests to launch the event loop before calling the test routine.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*base: Fixed bug#4118 where on .NET `put' had no effect on the actual process environment variables because the API was only available in .NET 2.0 which is what we support at the minimum.<br />
*{{Red|base: Fixed bug in `copy' from HEAP_PRIORITY_QUEUE which would not do anything because it was simply copying itself, not other.}}<br />
*{{Red|base: Fixed bug in `remove' from HEAP_PRIORITY_QUEUE which caused the internal structure to be referenced beyond its bounds.}}<br />
*serialization: Fixed a bug in SED_INDEPENDENT_DESERIALIZER in the experimental branch where we could get an out of bound access because we incorrectly resized a SPECIAL.<br />
*studio: Fixed bug preventing the an output from being selected on Windows.<br />
*studio: Fixed duplicate output issue when a subsystem activates the outputs tool before showing it.<br />
*studio: Fixed bug preventing the new features dialog from being displayed when using newer syntax.<br />
*EiffelVision: Fixed potential crash with tab navigation code when a key press was sent to a widget that is in the process of being unparented.<br />
*debugger: fixed#16013, now all READABLE_STRING_8/32 and descendant will be displayed as string literal in debugger tools.<br />
*compiler: Fixed eweasel test#final084 where compiler would generate incorrect type at run-time causing some memory corruption or a general failure.<br />
*compiler: Fixed eweasel test#final083 where compiler would crash when inlining certain type of code involving generic classes.<br />
*base: Added missing `own_from_pointer' in .NET version of MANAGED_POINTER<br />
*studio: Fixed issue where one could not change an integer based preference entry in EiffelStudio.<br />
<br />
==6.5.7.9743 (July 13th 2009)==<br />
===New features===<br />
*base: Added `own_from_pointer' in C_STRING.<br />
<br />
===Improvements===<br />
*studio:Made some bug fixes and improvements to the new output tool.<br />
*studio: Added tooltip to precompilation wizard list to show item's ecf file path<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*autotest: Fixed bug#15875 where selecting a test class and choosing run had no effect, now it will run all the test cases defined in that class.<br />
*base: Added missing `own_from_pointer' routine in the .NET version of MANAGED_POINTER<br />
*base: Made TYPE class similar to the classic version.<br />
*studio: Fixed bug#13103: Cannot set Shift+Esc as a shortcut in the preferences dialog.<br />
*studio: Fixed typo reported by bug#13220 in the Metric tool.<br />
*compiler: Fixed issue where one could not debug an application if the `executable_name' specified in the ECF contained the .exe suffix on Windows. This fixes bug#11834.<br />
<br />
===User changes===<br />
*compiler: the indexing value '''volatile''' previously introduced has been renamed into '''transient'''.<br />
<br />
===Developer changes===<br />
<br />
==6.5.7.9500==<br />
===New features===<br />
*{{Red|base: Changed {ANY}.generating_type to return an instance of TYPE}}<br />
*{{Red|runtime: Added support for transient attributes for store/retrieve. A transient attribute is an attribute which is not stored at runtime and for which its absence in the retrieval system has no effect.}}<br />
* compiler: Supported detection and validity error report for VSRP(3) (the root procedure is not precondition-free) (see test#vsrp301).<br />
<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
===User changes===<br />
===Developer changes===</div>Paulbhttps://dev.eiffel.com/index.php?title=EiffelStudio_6.5_Releases&diff=13135EiffelStudio 6.5 Releases2009-08-12T16:41:17Z<p>Paulb: /* New features */</p>
<hr />
<div>[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}<br />
<br />
= EiffelStudio 6.5.x Releases=<br />
<br />
==6.5.x==<br />
Placeholder for new stuff since last intermediate release. <br />
===New features===<br />
<br />
* {{Red|web_browser: Added Web Browser widget {EV_WEB_BROWSER} (see new "web_browser" library) and example project (see example under $ISE_LIBRARY/examples/web_browser)}}<br />
* studio: GCC and MSC external compilation errors are now displayed in the error list, with linking to source Eiffel feature when the information is available.<br />
<br />
===Improvements===<br />
*studio: Improved error messages for VUAR/VJAR/VBAR errors to mention compatibility instead of just conformance.<br />
*studio: Now double clicking on an ecf file will select the previously compiled target by default.<br />
*ec: Fixed command line compilation to use the current working directory unless -project_path is specified (restoring pre-ecf behavior)<br />
*ec: When an ecf file has been specified with -config, the previously compiled target is chosen as the first option in the compilable target list.<br />
*AutoTest: Improved tag tree for displaying tests by merging view/filter box into one input field<br />
*AutoTest: Potential test classes are traversed asynchronously after each compilation, allowing the user to continue working while tests are found. This also removes the need for special test clusters.<br />
*{{Red|AutoTest library: {EQA_TEST_SET}.on_prepare is called during `default_create', which makes it simpler to use attached attributes in void-safe tests.}}<br />
*AutoTest library: Moved actual test routine invocation into {EQA_TEST_SET}.run_test which can be used to nest the test routine call. This is used for example by Vision2 tests to launch the event loop before calling the test routine.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*base: Fixed bug#4118 where on .NET `put' had no effect on the actual process environment variables because the API was only available in .NET 2.0 which is what we support at the minimum.<br />
*{{Red|base: Fixed bug in `copy' from HEAP_PRIORITY_QUEUE which would not do anything because it was simply copying itself, not other.}}<br />
*{{Red|base: Fixed bug in `remove' from HEAP_PRIORITY_QUEUE which caused the internal structure to be referenced beyond its bounds.}}<br />
*serialization: Fixed a bug in SED_INDEPENDENT_DESERIALIZER in the experimental branch where we could get an out of bound access because we incorrectly resized a SPECIAL.<br />
*studio: Fixed bug preventing the an output from being selected on Windows.<br />
*studio: Fixed duplicate output issue when a subsystem activates the outputs tool before showing it.<br />
*studio: Fixed bug preventing the new features dialog from being displayed when using newer syntax.<br />
*EiffelVision: Fixed potential crash with tab navigation code when a key press was sent to a widget that is in the process of being unparented.<br />
*debugger: fixed#16013, now all READABLE_STRING_8/32 and descendant will be displayed as string literal in debugger tools.<br />
*compiler: Fixed eweasel test#final084 where compiler would generate incorrect type at run-time causing some memory corruption or a general failure.<br />
*compiler: Fixed eweasel test#final083 where compiler would crash when inlining certain type of code involving generic classes.<br />
*base: Added missing `own_from_pointer' in .NET version of MANAGED_POINTER<br />
*studio: Fixed issue where one could not change an integer based preference entry in EiffelStudio.<br />
<br />
==6.5.7.9743 (July 13th 2009)==<br />
===New features===<br />
*base: Added `own_from_pointer' in C_STRING.<br />
<br />
===Improvements===<br />
*studio:Made some bug fixes and improvements to the new output tool.<br />
*studio: Added tooltip to precompilation wizard list to show item's ecf file path<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*autotest: Fixed bug#15875 where selecting a test class and choosing run had no effect, now it will run all the test cases defined in that class.<br />
*base: Added missing `own_from_pointer' routine in the .NET version of MANAGED_POINTER<br />
*base: Made TYPE class similar to the classic version.<br />
*studio: Fixed bug#13103: Cannot set Shift+Esc as a shortcut in the preferences dialog.<br />
*studio: Fixed typo reported by bug#13220 in the Metric tool.<br />
*compiler: Fixed issue where one could not debug an application if the `executable_name' specified in the ECF contained the .exe suffix on Windows. This fixes bug#11834.<br />
<br />
===User changes===<br />
*compiler: the indexing value '''volatile''' previously introduced has been renamed into '''transient'''.<br />
<br />
===Developer changes===<br />
<br />
==6.5.7.9500==<br />
===New features===<br />
*{{Red|base: Changed {ANY}.generating_type to return an instance of TYPE}}<br />
*{{Red|runtime: Added support for transient attributes for store/retrieve. A transient attribute is an attribute which is not stored at runtime and for which its absence in the retrieval system has no effect.}}<br />
* compiler: Supported detection and validity error report for VSRP(3) (the root procedure is not precondition-free) (see test#vsrp301).<br />
<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
===User changes===<br />
===Developer changes===</div>Paulbhttps://dev.eiffel.com/index.php?title=Replaceable_User_Files&diff=13116Replaceable User Files2009-08-11T16:58:45Z<p>Paulb: Updated to use attached syntax</p>
<hr />
<div>[[Category:Extending EiffelStudio]]<br />
[[Category:EiffelStudio]]<br />
[[Category:EiffelStudio User Files]]<br />
<br />
With the release of [[:Category:EiffelStudio|EiffelStudio]] [[EiffelStudio 6.2 Releases|6.2]] came the notion of user files, or user replaceable files. These are configuration files, and the like, the end-user (that's you) can author to override a matching file found in the stock [[:Category:EiffelStudio|EiffelStudio]] installation.<br />
<br />
The advantages of such a mechanism are numerous; per-user configuration, user extensibility, customize/change an installation without touching the installation, augmenting the installation with additional files and folders, ...<br />
<br />
== User Files ==<br />
<br />
User files and folders can replace or augment files found under the installation under ''[[Environment Variables#Core Variables|$ISE_EIFFEL]]/studio''. The following indicates the corresponding user paths to place installation user replacement/augment files (''X.X'' indicates the ''Major.Minor'' version number of the compiler):<br />
<br />
* Under '''Windows''' the default location for Eiffel user files is ''%HOMEDRIVE%\%HOMEPATH%\My Documents\Eiffel X.X User Files\studio''<br />
<br />
* Under '''Unix/Linux''' the default location is ''~/.esXX/studio''<br />
<br />
* Under '''Mac OS X''' the default location is ''~/Eiffel X.X User Files/studio''<br />
<br />
If any of these location do not suit your needs, set the environment variable [[Environment Variables#Optional Variables|ISE_APP_DATA]] to point to the root user files folder. Defining [[Environment Variables#Optional Variables|ISE_APP_DATA]] means user replacement/augmented files will be located under [[Environment Variables#Optional Variables|$ISE_APP_DATA]]/studio.<br />
<br />
To replace an install file with a user file simply mirror the directory structure found under ''[[Environment Variables#Core Variables|$ISE_EIFFEL]]/studio'' in the user files folder, as explained above. Create or place a file with the same name in the user files respective folder and it will be utilized instead of the stock installed edition. It's that simple!<br />
<br />
{{Note|If running a workbench version of [[:Category:EiffelStudio|EiffelStudio]] or the Eiffel compiler remember to place user files under the user file folder with a '' (workbench)'' suffix for Windows, and ''_wkbench" suffix for non Windows. <br/>I.E. Under Linux place user files under ''~/.esXX_wkbench/studio'' instead of ''~/.esXX/studio''.<br/> If the [[Environment Variables#Optional Variables|$ISE_APP_DATA]] environment variable has been defined then the ''_wkbench'' suffix is not used because of the explicit use of an overriding the default value with an [[Environment Variables|environment variable]].}}<br />
<br />
=== User Folders ===<br />
In some cases, user files can be found in a user folder and will not be used to replace stock installation files but to augment a stock collection of files with a user set. This functionality can be found when working with [[Code Templates|code templates]]. Templates work a little differently because the folder under the installation does not have to be mirrored in the user files folder. Instead under the user folder there is a separate ''templates'' folder used to contain any and all code templates for tools like the [[Contract Tool|contract tool]] and the [[Eiffel Editor|editor]].<br />
<br />
== Limitations ==<br />
Not all files are currently supported with user files, just a select number of configuration files and template files. For all new developments, user files should be supported if applicable.<br />
<br />
For now there is no support for those version of [[:Category:EiffelStudio|EiffelStudio]] built using the [[LinuxUnixLayout|Unix Layout]]. [[LinuxUnixLayout|Unix layouts]] distribute files across the system and prevent a clean and reliable means to replicate an [[:Category:EiffelStudio|EiffelStudio]] installation, required to detect and utilize user files.<br />
<br />
== Working with User Files ==<br />
Most of the well know directories and files for the Eiffel compiler are located in a common class call <e>EIFFEL_ENV</e>, which is part of the environment library found in the [[:Category:EiffelStudio|EiffelStudio]] framework folder at ''[[Environment Variables#Auxiliary Variables|$EIFFEL_SRC]]/framework/environment''. There are effective implementations of <e>EIFFEL_ENV</e>; <e>EC_EIFFEL_LAYOUT</e> and <e>ES_EIFFEL_LAYOUT</e> used respectively in the Eiffel compiler and [[:Category:EiffelStudio|EiffelStudio]].<br />
<br />
{{Note|These classes need a little refactoring because most of the accessor functions live in <e>EIFFEL_ENV</e> instead of the more appropriate effective implementation class. It's just something to be aware in case of future changes.}}<br />
<br />
Most classes can access a single per-process instance of <e>EIFFEL_ENV</e> through inheriting <e>EIFFEL_LAYOUT</e> and accessing <e>eiffel_layout</e>, or alternatively using it as a client. A single instance is used because (a) there are parts of the Eiffel system that have no idea if they are running inside the graphical [[:Category:EiffelStudio|EiffelStudio]] IDE or as a TTY compiler (b) there are performance overheads when initializing <e>EIFFEL_ENV</e> so it's desirable to create and initialize the object once and once only.<br />
<br />
<e>EIFFEL_ENV</e> contains the two necessary functions to map an installation file or folder to a user file or folder; <e>user_priority_file_name</e> and <e>user_priority_path</e> for retrieving a user file location and a folder path respectively. These functions take an absolute path and return either an existing user based location, or <e>Void</e> if no user specific file or folder was found.<br />
<br />
=== Implementing User File Replacement ===<br />
<br />
Here's an example of utilizing user files as found in <e>EIFFEL_ENV</e>:<br />
<e><br />
compiler_configuration: FILE_NAME<br />
-- Platform specific system level resource specification file.<br />
require<br />
is_valid_environment: is_valid_environment<br />
once<br />
create Result.make_from_string (eifinit_path)<br />
Result.set_file_name ("general")<br />
Result.add_extension ("cfg")<br />
<br />
if is_user_files_supported then<br />
-- Check user override file.<br />
if attached user_priority_file_name (Result, True) as l_user_fn then<br />
Result := l_user_fn<br />
end<br />
end<br />
ensure<br />
not_result_is_empty: not Result.is_empty<br />
end<br />
</e><br />
<br />
In the example the path to ''general.cfg'' is built, which will be the normal default file used from the installation. A check is done to ensure the notion of user files is supported and being so, a check to see if there is a user specific version under the user folder. In the event that there is a user ''general.cfg'' file then it will be taken over the installed ''general.cfg''. In the example above the first argument represents the string path to map to a specific user file and the second Boolean argument indicates if a user file name should only be returned if the file actually exist.<br />
<br />
The use of <e>user_priority_path</e> is exactly the same way, but typically user folders are used to augment the contents of the respective installation folder instead of the replacing the content.</div>Paulbhttps://dev.eiffel.com/index.php?title=EiffelStudio_6.5_Releases&diff=13077EiffelStudio 6.5 Releases2009-07-31T19:38:58Z<p>Paulb: /* 6.5.x */</p>
<hr />
<div>[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}<br />
<br />
= EiffelStudio 6.5.x Releases=<br />
<br />
==6.5.x==<br />
Placeholder for new stuff since last intermediate release. <br />
===New features===<br />
<br />
* {{Red|web_browser: Added Web Browser widget {EV_WEB_BROWSER} (see new "web_browser" library) and example project (see example under $ISE_LIBRARY/examples/web_browser)}}<br />
* studio: GCC and MSC external compilation errors are now displayed in the error list.<br />
<br />
===Improvements===<br />
*studio: Improved error messages for VUAR/VJAR/VBAR errors to mention compatibility instead of just conformance.<br />
*studio: Now double clicking on an ecf file will select the previously compiled target by default.<br />
*ec: Fixed command line compilation to use the current working directory unless -project_path is specified (restoring pre-ecf behavior)<br />
*ec: When an ecf file has been specified with -config, the previously compiled target is chosen as the first option in the compilable target list.<br />
*AutoTest: Improved tag tree for displaying tests by merging view/filter box into one input field<br />
*AutoTest: Potential test classes are traversed asynchronously after each compilation, allowing the user to continue working while tests are found. This also removes the need for special test clusters.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*base: Fixed bug#4118 where on .NET `put' had no effect on the actual process environment variables because the API was only available in .NET 2.0 which is what we support at the minimum.<br />
*{{Red|base: Fixed bug in `copy' from HEAP_PRIORITY_QUEUE which would not do anything because it was simply copying itself, not other.}}<br />
*{{Red|base: Fixed bug in `remove' from HEAP_PRIORITY_QUEUE which caused the internal structure to be referenced beyond its bounds.}}<br />
*serialization: Fixed a bug in SED_INDEPENDENT_DESERIALIZER in the experimental branch where we could get an out of bound access because we incorrectly resized a SPECIAL.<br />
*studio: Fixed bug preventing the an output from being selected on Windows.<br />
*studio: Fixed duplicate output issue when a subsystem activates the outputs tool before showing it.<br />
*studio: Fixed bug preventing the new features dialog from being displayed when using newer syntax.<br />
*EiffelVision: Fixed potential crash with tab navigation code when a key press was sent to a widget that is in the process of being unparented.<br />
*debugger: fixed#16013, now all READABLE_STRING_8/32 and descendant will be displayed as string literal in debugger tools.<br />
*compiler: Fixed eweasel test#final084 where compiler would generate incorrect type at run-time causing some memory corruption or a general failure.<br />
*compiler: Fixed eweasel test#final083 where compiler would crash when inlining certain type of code involving generic classes.<br />
*base: Added missing `own_from_pointer' in .NET version of MANAGED_POINTER<br />
*studio: Fixed issue where one could not change an integer based preference entry in EiffelStudio.<br />
<br />
==6.5.7.9743 (July 13th 2009)==<br />
===New features===<br />
*base: Added `own_from_pointer' in C_STRING.<br />
<br />
===Improvements===<br />
*studio:Made some bug fixes and improvements to the new output tool.<br />
*studio: Added tooltip to precompilation wizard list to show item's ecf file path<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*autotest: Fixed bug#15875 where selecting a test class and choosing run had no effect, now it will run all the test cases defined in that class.<br />
*base: Added missing `own_from_pointer' routine in the .NET version of MANAGED_POINTER<br />
*base: Made TYPE class similar to the classic version.<br />
*studio: Fixed bug#13103: Cannot set Shift+Esc as a shortcut in the preferences dialog.<br />
*studio: Fixed typo reported by bug#13220 in the Metric tool.<br />
*compiler: Fixed issue where one could not debug an application if the `executable_name' specified in the ECF contained the .exe suffix on Windows. This fixes bug#11834.<br />
<br />
===User changes===<br />
*compiler: the indexing value '''volatile''' previously introduced has been renamed into '''transient'''.<br />
<br />
===Developer changes===<br />
<br />
==6.5.7.9500==<br />
===New features===<br />
*{{Red|base: Changed {ANY}.generating_type to return an instance of TYPE}}<br />
*{{Red|runtime: Added support for transient attributes for store/retrieve. A transient attribute is an attribute which is not stored at runtime and for which its absence in the retrieval system has no effect.}}<br />
* compiler: Supported detection and validity error report for VSRP(3) (the root procedure is not precondition-free) (see test#vsrp301).<br />
<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
===User changes===<br />
===Developer changes===</div>Paulbhttps://dev.eiffel.com/index.php?title=EiffelStudio_6.5_Releases&diff=12990EiffelStudio 6.5 Releases2009-07-15T23:47:22Z<p>Paulb: /* 6.5.x */</p>
<hr />
<div>[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}<br />
<br />
= EiffelStudio 6.5.x Releases=<br />
<br />
==6.5.x==<br />
Placeholder for new stuff since last intermediate release. <br />
===New features===<br />
===Improvements===<br />
*studio: Improved error messages for VUAR/VJAR/VBAR errors to mention compatibility instead of just conformance.<br />
*ec: Fixed command line compilation to use the current working directory unless -project_path is specified (restoring pre-ecf behavior)<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*base: Fixed bug#4118 where on .NET `put' had no effect on the actual process environment variables because the API was only available in .NET 2.0 which is what we support at the minimum.<br />
*{{Red|base: Fixed bug in copy from HEAP_PRIORITY_QUEUE which would not do anything because it was simply copying itself, not other.}}<br />
*{{Red|base: Fixed bug in remove from HEAP_PRIORITY_QUEUE which causes the internal structure to be referenced beyond it's bounds.}}<br />
*studio: Fixed bug preventing the an output from being selected on Windows.<br />
*studio: Fixed duplicate output issue when a subsystem activates the outputs tool before showing it.<br />
*studio: Fixed bug preventing the new features dialog from being displayed when using newer syntax.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.5.7.9743 (July 13th 2009)==<br />
===New features===<br />
*base: Added `own_from_pointer' in C_STRING.<br />
<br />
===Improvements===<br />
*studio:Made some bug fixes and improvements to the new output tool.<br />
*studio: Added tooltip to precompilation wizard list to show item's ecf file path<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*autotest: Fixed bug#15875 where selecting a test class and choosing run had no effect, now it will run all the test cases defined in that class.<br />
*base: Added missing `own_from_pointer' routine in the .NET version of MANAGED_POINTER<br />
*base: Made TYPE class similar to the classic version.<br />
*studio: Fixed bug#13103: Cannot set Shift+Esc as a shortcut in the preferences dialog.<br />
*studio: Fixed typo reported by bug#13220 in the Metric tool.<br />
*compiler: Fixed issue where one could not debug an application if the `executable_name' specified in the ECF contained the .exe suffix on Windows. This fixes bug#11834.<br />
<br />
===User changes===<br />
*compiler: the indexing value '''volatile''' previously introduced has been renamed into '''transient'''.<br />
<br />
===Developer changes===<br />
<br />
==6.5.7.9500==<br />
===New features===<br />
*{{Red|base: Changed {ANY}.generating_type to return an instance of TYPE}}<br />
*{{Red|runtime: Added support for transient attributes for store/retrieve. A transient attribute is an attribute which is not stored at runtime and for which its absence in the retrieval system has no effect.}}<br />
* compiler: Supported detection and validity error report for VSRP(3) (the root procedure is not precondition-free) (see test#vsrp301).<br />
<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
===User changes===<br />
===Developer changes===</div>Paulbhttps://dev.eiffel.com/index.php?title=Repository_Package&diff=12618Repository Package2009-06-16T00:08:45Z<p>Paulb: Added initial page</p>
<hr />
<div>{{UnderConstruction}}<br />
[[Category:Eiffel Library Repository]]<br />
<br />
A Repository Package, or just a Package is an encapsulated Eiffel library containing the Eiffel library source code, an Eiffel Configuration File (ECF), a package configuration file, a build script and any number of other ancillary files/resources.<br />
<br />
Packages are uploaded to the Eiffel Library [[Repository Server]], where they are checked for [[Integrity Checks|integrity]] and the committed to the [[Repository Server#Stable Repository|stable repository]] for end-users to download upon request.<br />
<br />
== Identification ==<br />
To date, Eiffel Configuration Files (ECF) are identified internally using a UUID. The UUID is purely to uniquely identify the configuration and apply setting and other configuration data to contained classes within that library. An Eiffel developer need not concern themselves with the UUID, just the on disk file name of the ECF.<br />
<br />
A file name is typically unique, and combined with an internal UUID it is possible to uniquely identify an Eiffel library through an ECF. However packages do not work in the same way. Packages are location agnostic because they are stored by the [[:Eiffel Library Repository|Eiffel Library Repository]]'s set to [[Repository Client Tools|tools]], and the [[#Versioning|versioning]] rules that apply to packages means multiple versions of an Library Package may exist in the locally downloaded repository.<br />
<br />
Because packages are location agnostic they need to be uniquely identified, in a human readable form. UUIDs are unique but give no indication about the package's function or origin. As a solution packages will use a human readable, reverse domain name. In conjunction with a version number (when multiple versions of the library exists) the package can be referenced with location independence.<br />
<br />
Examples of the reverse domain names:<br />
* com.eiffel.eiffel_base: EiffelBase<br />
* com.eiffel.eiffel_vision2: EiffelVision2<br />
* com.eiffel.eiffel_net: EiffelNet<br />
<br />
=== Versioning ===<br />
<br />
== Structure ==<br />
<br />
=== Configuration ===<br />
<br />
=== Eiffel Sources ===<br />
<br />
=== Build Scripts ===<br />
<br />
== OTHER STUFF - IGNORE ==<br />
<br />
Reverse domain name for human readable ID<br />
Version number<br />
Dependencies identified by name, version<br />
Platform information (x86, x86-64, Windows, Linux, ..., all)<br />
Build script<br />
Recommend hierarchy<br />
com.domain.name<br />
spec/ (generated)<br />
x86/<br />
x86-64/<br />
ARM/<br />
build/ (generated)<br />
<br />
Clib or clib/<br />
include/<br />
windows, unix or osx/<br />
$ISE_PLATFORM/<br />
src/<br />
doc/<br />
wiki/<br />
xml/<br />
resources/<br />
config.ecf<br />
config.lic<br />
config-unsafe.ecf<br />
config-unsafe.lic<br />
build.geant<br />
README<br />
INSTALL<br />
package.ini<br />
Configuration package.ini<br />
[package]<br />
version=M.m.r<br />
maintainer=some@one.com<br />
homepage=http://www.some.com<br />
<br />
[import]<br />
defaults=$ELR/config/defaults.ini (use name resolution - home, config, package dirs)<br />
<br />
[config]<br />
compiler_version=6.1.*,*<br />
build=true|false|1|0|yes|no<br />
<br />
[dependencies]<br />
com.eiffel.base=0.0.0, *<br />
com.eiffel.a=6.1, 6.2.*<br />
com.eiffel.b=*, 6<br />
com.eiffel.c=<6.9*.9*<br />
com.eiffel.d=>6.1.*<br />
<br />
[build:<platform>]<br />
build_tool=geant $build_script $build_args<br />
build_script=build.geant<br />
build_args=<br />
<br />
[clean:<platform>]<br />
clean_tool=geant $clean_script $clean_args<br />
clean_script=$build_script<br />
clean_args=clean<br />
Implicit variables (usable in CONFIG files)<br />
_PKG_NAME_: Human readable package name.<br />
_PKG_DIR_: Root directory of package on the end users system.<br />
_PKG_SRC_: Root directory of package source code.<br />
_PKG_VERSION_: Package version number.<br />
_PKG_INCLUDE_: Package external include files directory.<br />
_PKG_LIB_: Package external lib files directory.</div>Paulbhttps://dev.eiffel.com/index.php?title=Eiffel_Library_Repository&diff=12617Eiffel Library Repository2009-06-15T23:48:46Z<p>Paulb: /* Basic Structure */</p>
<hr />
<div>{{UnderConstruction}}<br />
[[Category:Eiffel Library Repository]]<br />
[[Category:EiffelStudio]]<br />
<br />
== Naming The Repository ==<br />
Got an idea what we should call it? Write your suggestions down in the [[Repository Name Suggestions]] page.<br />
<br />
== Overview ==<br />
Here at Eiffel Software we are planning something big and exciting that we hope will exponentially grow the availability and contribution of libraries for Eiffel, and before anything really gets started we wanted the most important feedback for a community focused project - community feedback.<br />
<br />
We are in the very early stages of planning so this is your chance to put forth ideas and comments of what you would like to see and how you would like this to work.<br />
<br />
We believe Eiffel would benefit from a centralized Eiffel library repository and an accompanying tool set for querying, downloading, and uploading <br />
[[Repository Package|prpackaged]] libraries. In the same vein popular Linux distributions use package managers, the Eiffel compiler should be able to reference a package library using a human readable, location agnostic, versioned library, and everything else is done for you, such as actually resolving the location of the package library. We want the process to be as simple as possible so user interaction would be kept to a minimum. Here is a quick outline of what we have planned for the first revision, this is a high level view for brevity:<br />
<br />
=== Availability ===<br />
<br />
Eiffel Software would like to have a first version of the repository available in due course for the next release (post 6.4). Although we would like to implement every feature under the sun for the initial release, we'll have to use our digression to prioritize the first release features. There are many features we would like to support, as well as some we don't even know about yet (this is where you come in), which could make the initial release of the infrastructure/tool set.<br />
<br />
=== Features ===<br />
<br />
The initial idea is to host the packages in a repository using a single master server and potentially a number of mirrors. End users will synchronize with the repository to download package metadata to a local cache, known by EiffelStudio and the Eiffel compiler or configured via a variable or configuration file. The downloaded information will not be the packages themselves, but just package information (name, version, description, dependencies, etc.), to ensure that synchronization is a swift process and to save bandwidth utilization. End users can then use a provided tool set, distributed with the Eiffel compiler, to download required packages or search for packages (eventually searching for specific functionality - i.e. "creating directories" and it giving back <code>DIRECTORY/DIRECTORY.create_dir</code> from EiffelBase). The process of downloading a package will also pull down any dependent packages as to ensure compilation is successful upon first use.<br />
<br />
For a future revision, the single master server/mirror paradigm may be enhanced to support community public repositories, allowing third parties to host their own server and serve their own libraries in a like manner to apt on Ubuntu. End users will then be able to configure a local cache into which they can download package metadata. The client tool set will then be able to search and download packages stored in a third-party repository.<br />
<br />
=== Basic Structure ===<br />
<br />
[[Repository Package|Packages]] (pre-packed Eiffel libraries) will be authored and structured in a known format/directory hierarchy containing the Eiffel source, resources, external dependencies (such as header files, libraries, external code needing compilation) and build scripts. A package configuration file will describe the package, its dependencies on other packages, and a version policy for each dependent package.<br />
<br />
Some packages support a single platform, some all, and some just a specific set of platforms. The package repository should respect this and each package should make aware the platforms it is applicable to. It is the responsibility of the package author to include any platform dependent external resources (binary libraries) as well as any platform independent externals, which will be built once downloaded on an end-user's system. If applicable, irrelevant platform specifics should be omitted when downloading the library, again saving bandwidth, space on the end-user's system, and cleanliness of the downloaded library itself.<br />
<br />
[[Repository Package|Packages]] may need to perform post-install setup or [[Repository Package#Build Script|building]] of platform independent sources (''EiffelNet'' is such an example). These packages should contain [Repository Package#Configuration File|configuration] information on how to build/install and clean/uninstall once a package is downloaded on an end user's system. Cleaning/uninstalling will occur when a package is updated or removed respectively.<br />
<br />
[[Repository Package|Packages]] will have to abide by a [Repository Package#Versioning|versioning] policy for the sake of compatibility. Each package will optionally contain a minimum/maximum version number of the Eiffel compiler, however packages should be smarter and support a wider range of compilers by utilizing the features of ECF. Packages depending on other packages should specify the minimum version of a referenced library, and optionally a maximum version (see below why this is important).<br />
<br />
This all sounds pretty boiler-plate for a package repository, and it is. Package repositories work well, so why would we try and change that?!<br />
<br />
=== Security ===<br />
<br />
Another issue is that of security. With repositories such as [http://www.macports.org MacPorts], not just anyone can simply apply and start uploading a "port". In fact, developing a port, uploading it, and maintaining it is very restrictive. A port has to be sent in and a moderator or someone with commit rights will integrate if for you. In [http://www.ubunut.org Ubuntu], access to the main repository is forbidden and third-party repositories have to be used or [http://en.wikipedia.org/wiki/Deb_(file_format) .deb] files have to be downloaded from another source. This all sounds very inconvenient. The repository should contain a means to allow package maintainers to upload new versions and no one else. This can be accomplished via an account manager, hosted by the package repository, or using a private/public key pair to be embedded in the package when uploaded or supplied as an argument to tools in the tool set.</div>Paulbhttps://dev.eiffel.com/index.php?title=Repository_Server&diff=12616Repository Server2009-06-15T23:47:57Z<p>Paulb: </p>
<hr />
<div>{{UnderConstruction}}<br />
[[Category:Eiffel Library Repository]]<br />
<br />
The Respository Server is where the [[:Eiffel Library Repository|Eiffel Library Repository]] holds and manages different versions of Eiffel library [[Repository Packages|packages]]. Packages can be uploaded, download and updated using a [[Respository Client Tools|client tool set]].<br />
<br />
== A Better Server ==<br />
<br />
There is one area where package repositories do not work well and it can be very frustrating - [http://www.google.com/search?q=broken+package broken packages]! It happens from time to time and when it does it feels like the end of the world, well for some people. For anyone who has used [http://www.macports.org MacPorts] or ''apt'' in [http://www.ubuntu.org Ubuntu] a misbehaving package can be a brick wall to progress. Matters are made worse when you are a supplier of a package with a broken dependency. Not only does the dependency package not compile but the author's package wont either. The number of broken packages as a result of a single broken package can be exponential. Eiffel [[Repository Packages|packages]] contain source libraries and will be susceptible to such breaks, so whatever can be done to prevent breaking changes from entering the repository the better for it.<br />
<br />
The single, external entry point to a broken packages is via an uploaded packages. There is another course to cause once stable packages to become broken, but this is through age - packages can become stale when not maintained. Both these issues can be resolved with active monitoring of uploaded package, triggering a series of events to ensure the integrity of a packages and those that depend on it.<br />
<br />
=== Stable Repository ==<br />
<br />
The server uses the notion of a "stable" repository. This refers to the packages made available for all end-users to download and other packages to depend on. Stable packages have been checked for integrity and should not cause problems when downloaded onto an end-user's system.<br />
<br />
=== Holding Area ===<br />
<br />
When a packages is uploaded to the repository the library will not actually be committed to the stable repository. A '''holding area''' serves to check the [[Integrity Checks|integrity]] of a packages before making it available to the general public as an upgrade to an existing packages or a new packages. Integrity is checked through a chain of compilation checks which must all pass or achieve an acceptable pass mark to be treated as a stable package to integrate.<br />
<br />
Packages uploaded are placed in an queue, called the '''Integrity Holding Queue''', to await a slot for processing the integrity checks on the applicable platforms.<br />
<br />
For more information on these checks, see [[Integrity Checks]].<br />
<br />
=== Avoiding Multiple Entries in the Holding Queue ===<br />
<br />
Utilizing a holding area and a queue of packages to be checked may cause a minor back log and lead to a situation where a package is uploaded once, the authors realize there is a mistake and then repackage the package and upload it again. In such an event the server should halt any checks being performed on the old version of the package, or remove any older version from the holding queue, and then place the newly uploaded package at the back of the queue. No communication will be sent to the package's maintain regarding older versions of the the upload package in the holding queue.<br />
<br />
=== Self Referential Breaks ===<br />
<br />
Maintaining a holding queue can lead to form or race condition where a package, early on in the queue, is uploaded and then later another package depending on that earlier package is uploaded. The earlier package introduces changes which will break the code of the later package, which were not detected because the new version (of the earlier package) is not yet available to check against. When it comes time to check the integrity of the latter package it will fail.<br />
<br />
This situation is consider to be rare and not needing to be addressed immediately. Even in the even of this happening, the latter package will be rejected and the maintainer informed of the rejection. The rejection notification email should contain recommendations to synchronize with the stable repository and try again.<br />
<br />
== Removing Libraries ==<br />
<br />
When a package is request for removal from the repository it is not actually removed completely. To remove the package would prevent other packages from compiling successfully. Instead the package will be marked as obsolete and all packages depending on the package will be notified of the new package status. Those same dependents will also be modified to use a maximum version number of the obsolete package. It is hoped all package maintainers respond and update their package, and upload a corrected version. Once the number of dependents falls to zero the package can actually be removed from the repository.<br />
<br />
It will be recommended for a maintainer to explain why they are removing the package and hint at another package to use in place, for the assistance to those authors of packages using the removed library.<br />
<br />
Maintainers of packages marked obsolete will not recieve any status notification emails regarding any packages breaking the obsolete package, because the package is considered no longer maintained.</div>Paulbhttps://dev.eiffel.com/index.php?title=Integrity_Checks&diff=12615Integrity Checks2009-06-15T23:36:18Z<p>Paulb: </p>
<hr />
<div>{{UnderConstruction}}<br />
[[Category:Eiffel Library Repository]]<br />
[[Category:EiffelStudio]]<br />
<br />
Integrity checks are part of the [[Repository Server]]'s ability to ensure cohesiveness of an uploaded [[Category:Eiffel Library Repository|Eiffel Library Repository]] [[Repository Package|package]]. All integrity checks are performed using the server's [[Repository Server#Holding Area|holding area]].<br />
<br />
== Integrity Checks Stage 1 ==<br />
<br />
There are a number of integrity checks to be performed on any package. All checks are static, in that configuration data is checked or compilations are made. Integrity checks do no perform any unit tests on the package library code because these run-time (dynamic), regression checks should be performed by the package's maintainer before the package is uploaded. It is uncertain just how many and how long such unit tests may take run which could significantly delay the migration of a library from the [[Repository Server#Holding Area|holding area]] to the repository.<br />
<br />
The very first checks to make are to ensure the uploaded package's [[Repository Package#Configuration File|package]] is compatible with all dependent packages. Packages may support one, some or all platforms so it is imperative this information is checked first because compilation will not succeed if there are supported/unsupported platform differences. For instance, the WEL is a Windows specific library. A library author could be finishing up development of a platform independent library on Windows, which has already been developed for various *nix platforms. To support Windows a reference to the WEL was added in the library [[:Configuration|ECF]], but added unconditionally. The library compiles on Windows just fine and did compile on all *nix platforms. The author then uploads the packaged library. The library will no longer compile on any other platforms except Windows because of the unconditioned reference to the WEL. The same configuration checks will be needed to ensure [[Void-safe Option|Void-Safe]] and non-Void-Safe package, unless the repository supports only Void-Safe packages. Finally all referenced packages need to be checked to ensure those package exist in the [[Repository Server|repository]].<br />
<br />
After the package fundamentals have been checked the uploaded package will built, if there is an associated [[Repository Package#Build Script|build script]]. If the build script succeeds in building the package's platform specifics then an Eiffel compilation will be performed, compiling '''all''' classes in the library. All classes are compiled to ensure all classes are usable, by anyone choosing to consume the package library in their project, and there are no junk classes in a package. Only an Eiffel compilation is performed and used for integrity checks, rather than on including a C compilation, because it will be impossible to guarantee all external, optional dependencies exist on the repository server (or the server performing the checks.)<br />
<br />
All compilations can be performed on the same server, given enough resources, or in a cloud managed by Eiffel Software. Servers will either utilize virtualization and guest OSs and specific platform architectures, or delegate the integrity checks to a dedicated machine running the applicable OS/platform architecture.<br />
<br />
Up to this point any failure in checking configuration compatibility or the Eiffel compilation, will be reported to the package maintainer with a description of the cause or a compilation report. A failure at this point is cause for the library to be rejected and removed from the [[Server Repository#Holding Area|holding area]]. The package will not be integrated into the [[Repository Server#Stable Repository|stable repository]].<br />
<br />
== Integrity Checks Stage 2 ==<br />
<br />
Even a package passing the first stage of integrity checks is still not integrated into the [[Repository Server#Stable Repository|stable repository]], but becomes a candidate for integration. The final check is to compile all packages depending on the uploaded package for integrity, to strengthen library code compatibility. Any dependent package with a set maximum version number lower than newly uploaded package will not be checked or compiled, only those equal to or greater than because the newly uploaded package will be used by the latter. All dependent packages are compiled before taking any action to ensure a more concise report to the package maintainer, in the event of an error.<br />
<br />
Once all of the dependent packages have been compiled against the new package, still in the [[Repository Server#Stable Repository|stable repository]], the server will check each package's library compilation record for failures. On one or more failures the uploaded package's maintainer will be emailed with a call to respond regarding what action to take. The new package may have introduced breaking changes and as such is considered to be a correct package fit for integration to the [[Repository Server#Stable Repository|stable repository]]. On the the other hand the library author may have made a mistake, breaking other code in the repository and wants to fix this. The maintain will respond to the email by selecting either a ''"Expected breaking changes, notify all dependent package maintainers (breaking change)"'' or ''"I'll fix it (recommended)"'' links, with a list of packages unable to compile. The former indicates to the repository the broken compilation was to be expected due to a breaking change. The cause of this will set all dependent packages with a maximum version number to the previous version of the uploaded package, as it is known to compile. All maintainers of the dependent packages, no longer able to compile with the current version, are emailed with with compilation error information and a message indicating the actions taken. The uploaded package is then integrated into the [[Repository Server#Stable Repository|stable repository]] and now multiple versions of the package exist there (old one of compatibility and the new one.) However, in the case the uploaded package maintainer opts to fix the package, the package is rejected and is removed from the [[Repository Server#Holding Area|holding area]]. It is expected a new version of the package be uploaded and all checks performed again.</div>Paulbhttps://dev.eiffel.com/index.php?title=Repository_Server&diff=12614Repository Server2009-06-15T23:32:53Z<p>Paulb: /* A Better Server */</p>
<hr />
<div>{{UnderConstruction}}<br />
[[Category:Eiffel Library Repository]]<br />
<br />
The server is where the library repository holds and manages different versions of Eiffel library [[Repository Packages|packages]]. The repository is where packages are downloaded from and are considered "stable" to use by all. This part of the repository is to be known as the stable repository. There will be no library packages stored or uploaded directly to this stable repository in order to prevent one of the major crutches in a library package manager.<br />
<br />
== A Better Server ==<br />
<br />
There is one area where package repositories do not work well and it can be very frustrating - [http://www.google.com/search?q=broken+package broken packages]! It happens from time to time and when it does it feels like the end of the world, well for some people. For anyone who has used [http://www.macports.org MacPorts] or ''apt'' in [http://www.ubuntu.org Ubuntu] a misbehaving package can be a brick wall to progress. Matters are made worse when you are a supplier of a package with a broken dependency. Not only does the dependency package not compile but the author's package wont either. The number of broken packages as a result of a single broken package can be exponential. Eiffel [[Repository Packages|packages]] contain source libraries and will be susceptible to such breaks, so whatever can be done to prevent breaking changes from entering the repository the better for it.<br />
<br />
The single, external entry point to a broken packages is via an uploaded packages. There is another course to cause once stable packages to become broken, but this is through age - packages can become stale when not maintained. Both these issues can be resolved with active monitoring of uploaded package, triggering a series of events to ensure the integrity of a packages and those that depend on it.<br />
<br />
== Uploading Packages ==<br />
<br />
=== Holding Area ===<br />
<br />
When a packages is uploaded to the repository the library will not actually be committed to the stable repository. A '''holding area''' serves to check the [[Integrity Checks|integrity]] of a packages before making it available to the general public as an upgrade to an existing packages or a new packages. Integrity is checked through a chain of compilation checks which must all pass or achieve an acceptable pass mark to be treated as a stable package to integrate.<br />
<br />
Packages uploaded are placed in an queue, called the '''Integrity Holding Queue''', to await a slot for processing the integrity checks on the applicable platforms.<br />
<br />
For more information on these checks, see [[Integrity Checks]].<br />
<br />
=== Avoiding Multiple Entries in the Holding Queue ===<br />
<br />
Utilizing a holding area and a queue of packages to be checked may cause a minor back log and lead to a situation where a package is uploaded once, the authors realize there is a mistake and then repackage the package and upload it again. In such an event the server should halt any checks being performed on the old version of the package, or remove any older version from the holding queue, and then place the newly uploaded package at the back of the queue. No communication will be sent to the package's maintain regarding older versions of the the upload package in the holding queue.<br />
<br />
=== Self Referential Breaks ===<br />
<br />
Maintaining a holding queue can lead to form or race condition where a package, early on in the queue, is uploaded and then later another package depending on that earlier package is uploaded. The earlier package introduces changes which will break the code of the later package, which were not detected because the new version (of the earlier package) is not yet available to check against. When it comes time to check the integrity of the latter package it will fail.<br />
<br />
This situation is consider to be rare and not needing to be addressed immediately. Even in the even of this happening, the latter package will be rejected and the maintainer informed of the rejection. The rejection notification email should contain recommendations to synchronize with the stable repository and try again.<br />
<br />
== Removing Libraries ==<br />
<br />
When a package is request for removal from the repository it is not actually removed completely. To remove the package would prevent other packages from compiling successfully. Instead the package will be marked as obsolete and all packages depending on the package will be notified of the new package status. Those same dependents will also be modified to use a maximum version number of the obsolete package. It is hoped all package maintainers respond and update their package, and upload a corrected version. Once the number of dependents falls to zero the package can actually be removed from the repository.<br />
<br />
It will be recommended for a maintainer to explain why they are removing the package and hint at another package to use in place, for the assistance to those authors of packages using the removed library.<br />
<br />
Maintainers of packages marked obsolete will not recieve any status notification emails regarding any packages breaking the obsolete package, because the package is considered no longer maintained.</div>Paulbhttps://dev.eiffel.com/index.php?title=Repository_Server&diff=12613Repository Server2009-06-15T23:32:05Z<p>Paulb: </p>
<hr />
<div>{{UnderConstruction}}<br />
[[Category:Eiffel Library Repository]]<br />
<br />
The server is where the library repository holds and manages different versions of Eiffel library [[Repository Packages|packages]]. The repository is where packages are downloaded from and are considered "stable" to use by all. This part of the repository is to be known as the stable repository. There will be no library packages stored or uploaded directly to this stable repository in order to prevent one of the major crutches in a library package manager.<br />
<br />
== A Better Server ==<br />
<br />
There is one area where package repositories do not work well and it can be very frustrating - [http://www.google.com/search?q=broken+package broken packages]! It happens from time to time and when it does it feels like the end of the world, well for some people. For anyone who has used [http://www.macports.org MacPorts] or ''apt'' in [http://www.ubuntu.org Ubuntu] a misbehaving package can be a brick wall to progress. Matters are made worse when you are a supplier of a package with a broken dependency. Not only does the dependency package not compile but the author's package wont either. The number of broken packages as a result of a single broken package can be exponential. Eiffel [[Repository Packages|packages]] contain source libraries and will be susceptible to such breaks, so whatever can be done to prevent breaking changes from entering the repository the better for it.<br />
<br />
The single, external entry point to a broken packages is via an uploaded packages. There is another course to cause once stable packages to become broken, but this is through age - packages can become stale when not maintained. Both these issues can be resolved with active monitoring of uploaded package, triggering a series of events to ensure the integrity of a packages and those that depend on it.<br />
<br />
=== Holding Area ===<br />
<br />
When a packages is uploaded to the repository the library will not actually be committed to the stable repository. A '''holding area''' serves to check the [[Integrity Checks|integrity]] of a packages before making it available to the general public as an upgrade to an existing packages or a new packages. Integrity is checked through a chain of compilation checks which must all pass or achieve an acceptable pass mark to be treated as a stable package to integrate.<br />
<br />
Packages uploaded are placed in an queue, called the '''Integrity Holding Queue''', to await a slot for processing the integrity checks on the applicable platforms.<br />
<br />
For more information on these checks, see [[Integrity Checks]].<br />
<br />
=== Avoiding Multiple Entries in the Holding Queue ===<br />
<br />
Utilizing a holding area and a queue of packages to be checked may cause a minor back log and lead to a situation where a package is uploaded once, the authors realize there is a mistake and then repackage the package and upload it again. In such an event the server should halt any checks being performed on the old version of the package, or remove any older version from the holding queue, and then place the newly uploaded package at the back of the queue. No communication will be sent to the package's maintain regarding older versions of the the upload package in the holding queue.<br />
<br />
=== Self Referential Breaks ===<br />
<br />
Maintaining a holding queue can lead to form or race condition where a package, early on in the queue, is uploaded and then later another package depending on that earlier package is uploaded. The earlier package introduces changes which will break the code of the later package, which were not detected because the new version (of the earlier package) is not yet available to check against. When it comes time to check the integrity of the latter package it will fail.<br />
<br />
This situation is consider to be rare and not needing to be addressed immediately. Even in the even of this happening, the latter package will be rejected and the maintainer informed of the rejection. The rejection notification email should contain recommendations to synchronize with the stable repository and try again.<br />
<br />
== Removing Libraries ==<br />
<br />
When a package is request for removal from the repository it is not actually removed completely. To remove the package would prevent other packages from compiling successfully. Instead the package will be marked as obsolete and all packages depending on the package will be notified of the new package status. Those same dependents will also be modified to use a maximum version number of the obsolete package. It is hoped all package maintainers respond and update their package, and upload a corrected version. Once the number of dependents falls to zero the package can actually be removed from the repository.<br />
<br />
It will be recommended for a maintainer to explain why they are removing the package and hint at another package to use in place, for the assistance to those authors of packages using the removed library.<br />
<br />
Maintainers of packages marked obsolete will not recieve any status notification emails regarding any packages breaking the obsolete package, because the package is considered no longer maintained.</div>Paulbhttps://dev.eiffel.com/index.php?title=Eiffel_Library_Repository&diff=12612Eiffel Library Repository2009-06-15T22:46:08Z<p>Paulb: Added sections</p>
<hr />
<div>{{UnderConstruction}}<br />
[[Category:Eiffel Library Repository]]<br />
[[Category:EiffelStudio]]<br />
<br />
== Naming The Repository ==<br />
Got an idea what we should call it? Write your suggestions down in the [[Repository Name Suggestions]] page.<br />
<br />
== Overview ==<br />
Here at Eiffel Software we are planning something big and exciting that we hope will exponentially grow the availability and contribution of libraries for Eiffel, and before anything really gets started we wanted the most important feedback for a community focused project - community feedback.<br />
<br />
We are in the very early stages of planning so this is your chance to put forth ideas and comments of what you would like to see and how you would like this to work.<br />
<br />
We believe Eiffel would benefit from a centralized Eiffel library repository and an accompanying tool set for querying, downloading, and uploading <br />
[[Repository Package|prpackaged]] libraries. In the same vein popular Linux distributions use package managers, the Eiffel compiler should be able to reference a package library using a human readable, location agnostic, versioned library, and everything else is done for you, such as actually resolving the location of the package library. We want the process to be as simple as possible so user interaction would be kept to a minimum. Here is a quick outline of what we have planned for the first revision, this is a high level view for brevity:<br />
<br />
=== Availability ===<br />
<br />
Eiffel Software would like to have a first version of the repository available in due course for the next release (post 6.4). Although we would like to implement every feature under the sun for the initial release, we'll have to use our digression to prioritize the first release features. There are many features we would like to support, as well as some we don't even know about yet (this is where you come in), which could make the initial release of the infrastructure/tool set.<br />
<br />
=== Features ===<br />
<br />
The initial idea is to host the packages in a repository using a single master server and potentially a number of mirrors. End users will synchronize with the repository to download package metadata to a local cache, known by EiffelStudio and the Eiffel compiler or configured via a variable or configuration file. The downloaded information will not be the packages themselves, but just package information (name, version, description, dependencies, etc.), to ensure that synchronization is a swift process and to save bandwidth utilization. End users can then use a provided tool set, distributed with the Eiffel compiler, to download required packages or search for packages (eventually searching for specific functionality - i.e. "creating directories" and it giving back <code>DIRECTORY/DIRECTORY.create_dir</code> from EiffelBase). The process of downloading a package will also pull down any dependent packages as to ensure compilation is successful upon first use.<br />
<br />
For a future revision, the single master server/mirror paradigm may be enhanced to support community public repositories, allowing third parties to host their own server and serve their own libraries in a like manner to apt on Ubuntu. End users will then be able to configure a local cache into which they can download package metadata. The client tool set will then be able to search and download packages stored in a third-party repository.<br />
<br />
=== Basic Structure ===<br />
<br />
[Repository Package|Packages] (pre-packed Eiffel libraries) will be authored and structured in a known format/directory hierarchy containing the Eiffel source, resources, external dependencies (such as header files, libraries, external code needing compilation) and build scripts. A package configuration file will describe the package, its dependencies on other packages, and a version policy for each dependent package.<br />
<br />
Some packages support a single platform, some all, and some just a specific set of platforms. The package repository should respect this and each package should make aware the platforms it is applicable to. It is the responsibility of the package author to include any platform dependent external resources (binary libraries) as well as any platform independent externals, which will be built once downloaded on an end-user's system. If applicable, irrelevant platform specifics should be omitted when downloading the library, again saving bandwidth, space on the end-user's system, and cleanliness of the downloaded library itself.<br />
<br />
[[Repository Package|Packages]] may need to perform post-install setup or [[Repository Package#Build Script|building]] of platform independent sources (''EiffelNet'' is such an example). These packages should contain [Repository Package#Configuration File|configuration] information on how to build/install and clean/uninstall once a package is downloaded on an end user's system. Cleaning/uninstalling will occur when a package is updated or removed respectively.<br />
<br />
[[Repository Package|Packages]] will have to abide by a [Repository Package#Versioning|versioning] policy for the sake of compatibility. Each package will optionally contain a minimum/maximum version number of the Eiffel compiler, however packages should be smarter and support a wider range of compilers by utilizing the features of ECF. Packages depending on other packages should specify the minimum version of a referenced library, and optionally a maximum version (see below why this is important).<br />
<br />
This all sounds pretty boiler-plate for a package repository, and it is. Package repositories work well, so why would we try and change that?! <br />
<br />
=== Security ===<br />
<br />
Another issue is that of security. With repositories such as [http://www.macports.org MacPorts], not just anyone can simply apply and start uploading a "port". In fact, developing a port, uploading it, and maintaining it is very restrictive. A port has to be sent in and a moderator or someone with commit rights will integrate if for you. In [http://www.ubunut.org Ubuntu], access to the main repository is forbidden and third-party repositories have to be used or [http://en.wikipedia.org/wiki/Deb_(file_format) .deb] files have to be downloaded from another source. This all sounds very inconvenient. The repository should contain a means to allow package maintainers to upload new versions and no one else. This can be accomplished via an account manager, hosted by the package repository, or using a private/public key pair to be embedded in the package when uploaded or supplied as an argument to tools in the tool set.</div>Paulbhttps://dev.eiffel.com/index.php?title=Eiffel_Library_Repository&diff=12611Eiffel Library Repository2009-06-15T22:41:26Z<p>Paulb: /* Overview */</p>
<hr />
<div>{{UnderConstruction}}<br />
[[Category:Eiffel Library Repository]]<br />
[[Category:EiffelStudio]]<br />
<br />
== Naming The Repository ==<br />
Got an idea what we should call it? Write your suggestions down in the [[Repository Name Suggestions]] page.<br />
<br />
== Overview ==<br />
Here at Eiffel Software we are planning something big and exciting that we hope will exponentially grow the availability and contribution of libraries for Eiffel, and before anything really gets started we wanted the most important feedback for a community focused project - community feedback.<br />
<br />
We are in the very early stages of planning so this is your chance to put forth ideas and comments of what you would like to see and how you would like this to work.<br />
<br />
We believe Eiffel would benefit from a centralized Eiffel library repository and an accompanying tool set for querying, downloading, and uploading <br />
[Repository Package|prpackaged] libraries. In the same vein popular Linux distributions use package managers, the Eiffel compiler should be able to reference a package library using a human readable, location agnostic, versioned library, and everything else is done for you, such as actually resolving the location of the package library. We want the process to be as simple as possible so user interaction would be kept to a minimum. Here is a quick outline of what we have planned for the first revision, this is a high level view for brevity:<br />
<br />
Eiffel Software would like to have a first version of the repository available in due course for the next release (post 6.4). Although we would like to implement every feature under the sun for the initial release, we'll have to use our digression to prioritize the first release features. There are many features we would like to support, as well as some we don't even know about yet (this is where you come in), which could make the initial release of the infrastructure/tool set.<br />
<br />
The initial idea is to host the packages in a repository using a single master server and potentially a number of mirrors. End users will synchronize with the repository to download package metadata to a local cache, known by EiffelStudio and the Eiffel compiler or configured via a variable or configuration file. The downloaded information will not be the packages themselves, but just package information (name, version, description, dependencies, etc.), to ensure that synchronization is a swift process and to save bandwidth utilization. End users can then use a provided tool set, distributed with the Eiffel compiler, to download required packages or search for packages (eventually searching for specific functionality - i.e. "creating directories" and it giving back <code>DIRECTORY/DIRECTORY.create_dir</code> from EiffelBase). The process of downloading a package will also pull down any dependent packages as to ensure compilation is successful upon first use.<br />
<br />
For a future revision, the single master server/mirror paradigm may be enhanced to support community public repositories, allowing third parties to host their own server and serve their own libraries in a like manner to apt on Ubuntu. End users will then be able to configure a local cache into which they can download package metadata. The client tool set will then be able to search and download packages stored in a third-party repository.<br />
<br />
[Repository Package|Packages] (pre-packed Eiffel libraries) will be authored and structured in a known format/directory hierarchy containing the Eiffel source, resources, external dependencies (such as header files, libraries, external code needing compilation) and build scripts. A package configuration file will describe the package, its dependencies on other packages, and a version policy for each dependent package.<br />
<br />
Some packages support a single platform, some all, and some just a specific set of platforms. The package repository should respect this and each package should make aware the platforms it is applicable to. It is the responsibility of the package author to include any platform dependent external resources (binary libraries) as well as any platform independent externals, which will be built once downloaded on an end-user's system. If applicable, irrelevant platform specifics should be omitted when downloading the library, again saving bandwidth, space on the end-user's system, and cleanliness of the downloaded library itself.<br />
<br />
[Repository Package|Packages] may need to perform post-install setup or [Repository Package#Build Script|building] of platform independent sources (''EiffelNet'' is such an example). These packages should contain [Repository Package#Configuration File|configuration] information on how to build/install and clean/uninstall once a package is downloaded on an end user's system. Cleaning/uninstalling will occur when a package is updated or removed respectively.<br />
<br />
[Repository Package|Packages] will have to abide by a [Repository Package#Versioning|versioning] policy for the sake of compatibility. Each package will optionally contain a minimum/maximum version number of the Eiffel compiler, however packages should be smarter and support a wider range of compilers by utilizing the features of ECF. Packages depending on other packages should specify the minimum version of a referenced library, and optionally a maximum version (see below why this is important).<br />
<br />
This all sounds pretty boiler-plate for a package repository, and it is. Package repositories work well, so why would we try and change that?! <br />
<br />
Another issue is that of security. With repositories such as [http://www.macports.org|MacPorts], not just anyone can simply apply and start uploading a "port". In fact, developing a port, uploading it, and maintaining it is very restrictive. A port has to be sent in and a moderator or someone with commit rights will integrate if for you. In [http://www.ubunut.org Ubuntu], access to the main repository is forbidden and third-party repositories have to be used or [http://en.wikipedia.org/wiki/Deb_(file_format) .deb] files have to be downloaded from another source. This all sounds very inconvenient. The repository should contain a means to allow package maintainers to upload new versions and no one else. This can be accomplished via an account manager, hosted by the package repository, or using a private/public key pair to be embedded in the package when uploaded or supplied as an argument to tools in the tool set.</div>Paulbhttps://dev.eiffel.com/index.php?title=Eiffel_Library_Repository&diff=12610Eiffel Library Repository2009-06-15T22:40:58Z<p>Paulb: Initial page</p>
<hr />
<div>{{UnderConstruction}}<br />
[[Category:Eiffel Library Repository]]<br />
[[Category:EiffelStudio]]<br />
<br />
== Naming The Repository ==<br />
Got an idea what we should call it? Write your suggestions down in the [[Repository Name Suggestions]] page.<br />
<br />
== Overview ==<br />
Here at Eiffel Software we are planning something big and exciting that we hope will exponentially grow the availability and contribution of libraries for Eiffel, and before anything really gets started we wanted the most important feedback for a community focused project - community feedback.<br />
<br />
We are in the very early stages of planning so this is your chance to put forth ideas and comments of what you would like to see and how you would like this to work.<br />
<br />
We believe Eiffel would benefit from a centralized Eiffel library repository and an accompanying tool set for querying, downloading, and uploading <br />
[Repository Package|prpackaged] libraries. In the same vein popular Linux distributions use package managers, the Eiffel compiler should be able to reference a package library using a human readable, location agnostic, versioned library, and everything else is done for you, such as actually resolving the location of the package library. We want the process to be as simple as possible so user interaction would be kept to a minimum. Here is a quick outline of what we have planned for the first revision, this is a high level view for brevity:<br />
<br />
Eiffel Software would like to have a first version of the repository available in due course for the next release (post 6.4). Although we would like to implement every feature under the sun for the initial release, we'll have to use our digression to prioritize the first release features. There are many features we would like to support, as well as some we don't even know about yet (this is where you come in), which could make the initial release of the infrastructure/tool set.<br />
<br />
The initial idea is to host the packages in a repository using a single master server and potentially a number of mirrors. End users will synchronize with the repository to download package metadata to a local cache, known by EiffelStudio and the Eiffel compiler or configured via a variable or configuration file. The downloaded information will not be the packages themselves, but just package information (name, version, description, dependencies, etc.), to ensure that synchronization is a swift process and to save bandwidth utilization. End users can then use a provided tool set, distributed with the Eiffel compiler, to download required packages or search for packages (eventually searching for specific functionality - i.e. "creating directories" and it giving back <code>DIRECTORY/DIRECTORY.create_dir</code> from EiffelBase). The process of downloading a package will also pull down any dependent packages as to ensure compilation is successful upon first use.<br />
<br />
For a future revision, the single master server/mirror paradigm may be enhanced to support community public repositories, allowing third parties to host their own server and serve their own libraries in a like manner to apt on Ubuntu. End users will then be able to configure a local cache into which they can download package metadata. The client tool set will then be able to search and download packages stored in a third-party repository.<br />
<br />
[Repository Package|Packages] (pre-packed Eiffel libraries) will be authored and structured in a known format/directory hierarchy containing the Eiffel source, resources, external dependencies (such as header files, libraries, external code needing compilation) and build scripts. A package configuration file will describe the package, its dependencies on other packages, and a version policy for each dependent package.<br />
<br />
Some packages support a single platform, some all, and some just a specific set of platforms. The package repository should respect this and each package should make aware the platforms it is applicable to. It is the responsibility of the package author to include any platform dependent external resources (binary libraries) as well as any platform independent externals, which will be built once downloaded on an end-user's system. If applicable, irrelevant platform specifics should be omitted when downloading the library, again saving bandwidth, space on the end-user's system, and cleanliness of the downloaded library itself.<br />
<br />
[Repository Package|Packages] may need to perform post-install setup or [Repository Package#Build Script|building] of platform independent sources (''EiffelNet'' is such an example). These packages should contain [Repository Package#Configuration File|configuration] information on how to build/install and clean/uninstall once a package is downloaded on an end user's system. Cleaning/uninstalling will occur when a package is updated or removed respectively.<br />
<br />
[Repository Package|Packages] will have to abide by a [Repository Package#Versioning|versioning] policy for the sake of compatibility. Each package will optionally contain a minimum/maximum version number of the Eiffel compiler, however packages should be smarter and support a wider range of compilers by utilizing the features of ECF. Packages depending on other packages should specify the minimum version of a referenced library, and optionally a maximum version (see below why this is important).<br />
<br />
This all sounds pretty boiler-plate for a package repository, and it is. Package repositories work well, so why would we try and change that?! <br />
<br />
Another issue is that of security. With repositories such as [[http://www.macports.org|MacPorts]], not just anyone can simply apply and start uploading a "port". In fact, developing a port, uploading it, and maintaining it is very restrictive. A port has to be sent in and a moderator or someone with commit rights will integrate if for you. In [[http://www.ubunut.org Ubuntu]], access to the main repository is forbidden and third-party repositories have to be used or [[http://en.wikipedia.org/wiki/Deb_(file_format) .deb]] files have to be downloaded from another source. This all sounds very inconvenient. The repository should contain a means to allow package maintainers to upload new versions and no one else. This can be accomplished via an account manager, hosted by the package repository, or using a private/public key pair to be embedded in the package when uploaded or supplied as an argument to tools in the tool set.</div>Paulbhttps://dev.eiffel.com/index.php?title=Category:Server_Repository&diff=12609Category:Server Repository2009-06-15T22:33:29Z<p>Paulb: Replacing page with 'See Repository Server.'</p>
<hr />
<div>See [[Repository Server]].</div>Paulbhttps://dev.eiffel.com/index.php?title=Repository_Server&diff=12608Repository Server2009-06-15T22:33:09Z<p>Paulb: Initial page</p>
<hr />
<div>{{UnderConstruction}}<br />
[[Category:Eiffel Library Repository]]<br />
<br />
The server is where the library repository holds and manages different versions of Eiffel library [[Repository Packages|packages]]. The repository is where packages are downloaded from and are considered "stable" to use by all. This part of the repository is to be known as the stable repository. There will be no library packages stored or uploaded directly to this stable repository in order to prevent one of the major crutches in a library package manager.<br />
<br />
== A Better Server ==<br />
<br />
There is one area where package repositories do not work well and it can be very frustrating - [http://www.google.com/search?q=broken+package broken packages]! It happens from time to time and when it does it feels like the end of the world, well for some people. For anyone who has used [http://www.macports.org MacPorts] or ''apt'' in [http://www.ubuntu.org Ubuntu] a misbehaving package can be a brick wall to progress. Matters are made worse when you are a supplier of a package with a broken dependency. Not only does the dependency package not compile but the author's package wont either. The number of broken packages as a result of a single broken package can be exponential. Eiffel [[Repository Packages|packages]] contain source libraries and will be susceptible to such breaks, so whatever can be done to prevent breaking changes from entering the repository the better for it.<br />
<br />
The single, external entry point to a broken packages is via an uploaded packages. There is another course to cause once stable packages to become broken, but this is through age - packages can become stale when not maintained. Both these issues can be resolved with active monitoring of uploaded package, triggering a series of events to ensure the integrity of a packages and those that depend on it.<br />
<br />
=== Holding Area ===<br />
<br />
When a packages is uploaded to the repository the library will not actually be committed to the stable repository. A '''holding area''' serves to check the [[Integrity Checks|integrity]] of a packages before making it available to the general public as an upgrade to an existing packages or a new packages. Integrity is checked through a chain of compilation checks which must all pass or achieve an acceptable pass mark to be treated as a stable package to integrate.<br />
<br />
Packages uploaded are placed in an queue, called the '''Integrity Holding Queue''', to await a slot for processing the integrity checks on the applicable platforms.<br />
<br />
For more information on these checks, see [[Integrity Checks]].<br />
<br />
=== Avoiding Multiple Entries in the Holding Queue ===<br />
<br />
Utilizing a holding area and a queue of packages to be checked may cause a minor back log and lead to a situation where a package is uploaded once, the authors realize there is a mistake and then repackage the package and upload it again. In such an event the server should halt any checks being performed on the old version of the package, or remove any older version from the holding queue, and then place the newly uploaded package at the back of the queue. No communication will be sent to the package's maintain regarding older versions of the the upload package in the holding queue.<br />
<br />
=== Self Referential Breaks ===<br />
<br />
Maintaining a holding queue can lead to form or race condition where a package, early on in the queue, is uploaded and then later another package depending on that earlier package is uploaded. The earlier package introduces changes which will break the code of the later package, which were not detected because the new version (of the earlier package) is not yet available to check against. When it comes time to check the integrity of the latter package it will fail.<br />
<br />
This situation is consider to be rare and not needing to be addressed immediately. Even in the even of this happening, the latter package will be rejected and the maintainer informed of the rejection. The rejection notification email should contain recommendations to synchronize with the stable repository and try again.</div>Paulbhttps://dev.eiffel.com/index.php?title=Category:Server_Repository&diff=12607Category:Server Repository2009-06-15T22:31:50Z<p>Paulb: New page: {{UnderConstruction}} Category:Eiffel Library Repository The server is where the library repository holds and manages different versions of Eiffel library [[Repository Packages|packag...</p>
<hr />
<div>{{UnderConstruction}}<br />
[[Category:Eiffel Library Repository]]<br />
<br />
The server is where the library repository holds and manages different versions of Eiffel library [[Repository Packages|packages]]. The repository is where packages are downloaded from and are considered "stable" to use by all. This part of the repository is to be known as the stable repository. There will be no library packages stored or uploaded directly to this stable repository in order to prevent one of the major crutches in a library package manager.<br />
<br />
== A Better Server ==<br />
<br />
There is one area where package repositories do not work well and it can be very frustrating - [http://www.google.com/search?q=broken+package broken packages]! It happens from time to time and when it does it feels like the end of the world, well for some people. For anyone who has used [http://www.macports.org MacPorts] or ''apt'' in [http://www.ubuntu.org Ubuntu] a misbehaving package can be a brick wall to progress. Matters are made worse when you are a supplier of a package with a broken dependency. Not only does the dependency package not compile but the author's package wont either. The number of broken packages as a result of a single broken package can be exponential. Eiffel [[Repository Packages|packages]] contain source libraries and will be susceptible to such breaks, so whatever can be done to prevent breaking changes from entering the repository the better for it.<br />
<br />
The single, external entry point to a broken packages is via an uploaded packages. There is another course to cause once stable packages to become broken, but this is through age - packages can become stale when not maintained. Both these issues can be resolved with active monitoring of uploaded package, triggering a series of events to ensure the integrity of a packages and those that depend on it.<br />
<br />
=== Holding Area ===<br />
<br />
When a packages is uploaded to the repository the library will not actually be committed to the stable repository. A '''holding area''' serves to check the [[Integrity Checks|integrity]] of a packages before making it available to the general public as an upgrade to an existing packages or a new packages. Integrity is checked through a chain of compilation checks which must all pass or achieve an acceptable pass mark to be treated as a stable package to integrate.<br />
<br />
Packages uploaded are placed in an queue, called the '''Integrity Holding Queue''', to await a slot for processing the integrity checks on the applicable platforms.<br />
<br />
For more information on these checks, see [[Integrity Checks]].<br />
<br />
=== Avoiding Multiple Entries in the Holding Queue ===<br />
<br />
Utilizing a holding area and a queue of packages to be checked may cause a minor back log and lead to a situation where a package is uploaded once, the authors realize there is a mistake and then repackage the package and upload it again. In such an event the server should halt any checks being performed on the old version of the package, or remove any older version from the holding queue, and then place the newly uploaded package at the back of the queue. No communication will be sent to the package's maintain regarding older versions of the the upload package in the holding queue.<br />
<br />
=== Self Referential Breaks ===<br />
<br />
Maintaining a holding queue can lead to form or race condition where a package, early on in the queue, is uploaded and then later another package depending on that earlier package is uploaded. The earlier package introduces changes which will break the code of the later package, which were not detected because the new version (of the earlier package) is not yet available to check against. When it comes time to check the integrity of the latter package it will fail.<br />
<br />
This situation is consider to be rare and not needing to be addressed immediately. Even in the even of this happening, the latter package will be rejected and the maintainer informed of the rejection. The rejection notification email should contain recommendations to synchronize with the stable repository and try again.</div>Paulbhttps://dev.eiffel.com/index.php?title=Integrity_Checks&diff=12606Integrity Checks2009-06-15T22:12:39Z<p>Paulb: </p>
<hr />
<div>{{UnderConstruction}}<br />
[[Category:Eiffel Library Repository]]<br />
[[Category:EiffelStudio]]<br />
<br />
Integrity checks are part of the [[Repository Server]]'s ability to ensure cohesiveness of an uploaded [[Category:Eiffel Library Repository|Eiffel Library Repository]] [[Repository Package|package]].<br />
<br />
== Integrity Checks Pt. 1 ==<br />
<br />
There are a number of integrity checks to be performed on any package. All checks are static, in that configuration data is checked or compilations are made. Integrity checks do no perform any unit tests on the package library code because these run-time (dynamic), regression checks should be performed by the package's maintainer before the package is uploaded. It is uncertain just how many and how long such unit tests may take run which could significantly delay the migration of a library from the [[Server Repository#Holding Area|holding area]] to the repository.<br />
<br />
The very first checks to make are to ensure the uploaded package's [[Repository Package#Configuration File|package]] is compatible with all dependent packages. Packages may support one, some or all platforms so it is imperative this information is checked first because compilation will not succeed if there are supported/unsupported platform differences. For instance, the WEL is a Windows specific library. A library author could be finishing up development of a platform independent library on Windows, which has already been developed for various *nix platforms. To support Windows a reference to the WEL was added in the library [[:Configuration|ECF]], but added unconditionally. The library compiles on Windows just fine and did compile on all *nix platforms. The author then uploads the packaged library. The library will no longer compile on any other platforms except Windows because of the unconditioned reference to the WEL. The same configuration checks will be needed to ensure [[Void-safe Option|Void-Safe]] and non-Void-Safe package, unless the repository supports only Void-Safe packages. Finally all referenced packages need to be checked to ensure those package exist in the [[Server Repository|repository]].<br />
<br />
After the package fundamentals have been checked the uploaded package will built, if there is an associated [[Repository Package#Build Script|build script]]. If the build script succeeds in building the package's platform specifics then an Eiffel compilation will be performed, compiling '''all''' classes in the library. All classes are compiled to ensure all classes are usable, by anyone choosing to consume the package library in their project, and there are no junk classes in a package. Only an Eiffel compilation is performed and used for integrity checks, rather than on including a C compilation, because it will be impossible to guarantee all external, optional dependencies exist on the repository server (or the server performing the checks.)<br />
<br />
All compilations can be performed on the same server, given enough resources, or in a cloud managed by Eiffel Software. Servers will either utilize virtualization and guest OSs and specific platform architectures, or delegate the integrity checks to a dedicated machine running the applicable OS/platform architecture.<br />
<br />
Up to this point any failure in checking configuration compatibility or the Eiffel compilation, will be reported to the package maintainer with a description of the cause or a compilation report. A failure at this point is cause for the library to be rejected and removed from the [[Server Repository#Holding Area|holding area]]. The package will not be integrated into the [[Server Repository#Stable Repository|stable repository]].<br />
<br />
== Integrity Checks Pt. 2 ==<br />
<br />
Even a package passing the first stage of integrity checks is still not integrated into the [[Server Repository#Stable Repository|stable repository]], but becomes a candidate for integration. The final check is to compile all packages depending on the uploaded package for integrity, to strengthen library code compatibility. Any dependent package with a set maximum version number lower than newly uploaded package will not be checked or compiled, only those equal to or greater than because the newly uploaded package will be used by the latter. All dependent packages are compiled before taking any action to ensure a more concise report to the package maintainer, in the event of an error.<br />
<br />
Once all of the dependent packages have been compiled against the new package, still in the [[Server Repository#Stable Repository|stable repository]], the server will check each package's library compilation record for failures. On one or more failures the uploaded package's maintainer will be emailed with a call to respond regarding what action to take. The new package may have introduced breaking changes and as such is considered to be a correct package fit for integration to the [[Server Repository#Stable Repository|stable repository]]. On the the other hand the library author may have made a mistake, breaking other code in the repository and wants to fix this. The maintain will respond to the email by selecting either a ''"Expected breaking changes, notify all dependent package maintainers (breaking change)"'' or ''"I'll fix it (recommended)"'' links, with a list of packages unable to compile. The former indicates to the repository the broken compilation was to be expected due to a breaking change. The cause of this will set all dependent packages with a maximum version number to the previous version of the uploaded package, as it is known to compile. All maintainers of the dependent packages, no longer able to compile with the current version, are emailed with with compilation error information and a message indicating the actions taken. The uploaded package is then integrated into the [[Server Repository#Stable Repository|stable repository]] and now multiple versions of the package exist there (old one of compatibility and the new one.) However, in the case the uploaded package maintainer opts to fix the package, the package is rejected and is removed from the [[Server Repository#Holding Area|holding area]]. It is expected a new version of the package be uploaded and all checks performed again.</div>Paulbhttps://dev.eiffel.com/index.php?title=Category:Eiffel_Library_Repository&diff=12605Category:Eiffel Library Repository2009-06-15T20:24:45Z<p>Paulb: </p>
<hr />
<div>Here at [http://www.eiffel.com Eiffel Software] we are planning something big and exciting that we hope will exponentially grow the availability and contribution of libraries for Eiffel, and before anything really gets started we wanted the most important feedback for a community focused project - community feedback.<br />
<br />
We are in the very early stages of planning so this is your chance to put forth ideas and comments of what you would like to see and how you would like this to work.<br />
<br />
We believe Eiffel would benefit from a centralized '''Eiffel Library Repository''' and an accompanying tool set for querying, downloading, and uploading prepackaged libraries. In the same vein popular Linux distributions use package managers, the Eiffel Compiler should be able to reference a library using a human readable, location agnostic, versioned library, and everything else is done for you, such as actually resolving the location of the library. We want the process to be as simple as possible so user interaction would be kept to a minimum. <br />
<br />
This category is links to the various topics being designed or thought out to being implementation of a repository.<br />
<br />
== Recommended Reading Order ==<br />
# [[Eiffel Library Repository]]<br />
# [[Repository Server]]<br />
# [[Integrity Checks]]<br />
# [[Repository Client Tool Set]]</div>Paulbhttps://dev.eiffel.com/index.php?title=Eiffel_Library_Repository&diff=12604Eiffel Library Repository2009-06-15T20:22:46Z<p>Paulb: Added initial page</p>
<hr />
<div>{{UnderConstruction}}<br />
[[Category:Eiffel Library Repository]]<br />
[[Category:EiffelStudio]]<br />
<br />
Got an idea what we should call it? Write your suggestions down in the [[Repository Name Suggestions]] page.<br />
<br />
Placeholder for the Eiffel Library Repository description.</div>Paulbhttps://dev.eiffel.com/index.php?title=Integrity_Checks&diff=12603Integrity Checks2009-06-15T20:20:55Z<p>Paulb: </p>
<hr />
<div>{{UnderConstruction}}<br />
[[Category:Eiffel Library Repository]]<br />
[[Category:EiffelStudio]]<br />
<br />
Integrity checks are part of the [[Repository Server]]'s ability to ensure cohesiveness of an uploaded [[:Eiffel Library Repository|Eiffel Library Repository]] [[Repository Package|package]].<br />
<br />
== Integrity Checks Pt. 1 ==<br />
<br />
There are a number of integrity checks to be performed on any library. All checks are static, in that configuration data is checked or compilations are made. Integrity checks do no perform any unit tests because these run-time (dynamic), regression checks should be performed by the library maintainer before the library is uploaded. It is uncertain just how many and how long such unit tests may take run which could significantlly delay the migration of a library from the holding area to the repository.<br />
<br />
The very first checks to make are to ensure the uploaded library's configuration is compatible with all dependent libraries. Libraries may support one, some or all platforms so it is imperitive this information is checked first because compilation will not succeed if there are supported/unsupported platform differences. For instance, the WEL is a Windows specific library. A library author could be finishing up development of a platform independent library on Windows, which has already been developed for various *nix platforms. To support Windows a reference to the WEL was added in the library ECF, but added unconditionally. The library compiles on Windows just fine and did compile on all *nix platforms. The author then uploads the library. The library will no longer compile on any other platforms except Windows because of the unconditioned reference to the WEL. The same configuration checks will be needed to ensure Void-Safe and non-Void-Safe libraries, unless the repository supports only Void-Safe libraries. Finally all referenced libraries need to be checked to ensure they exist in the repository. It is possible to reference a library is removed at some point and those libraries need to update. <br />
<br />
After the library fundamentals have been checked the uploaded library will built, if there is an associated build script. If the build script succeeds in building the library's platform specifics then an Eiffel compilation will be performed, compiling all classes in the library. All classes are compiled to ensure all classes are usable, by anyone choosing to consume the library in their project, and there are no junk classes in a library. Only an Eiffel compilation is performed and used for integrity checks, rather than on including a C compilation, because it will be impossible to guarentee all external, optional dependencies exist on the repository server (or the server performing the checks.)<br />
<br />
All compilations can be performed on the same server, given enough resources, or in a cloud managed by Eiffel Software. Servers will either utilize virtualization and guest OSs and specific platform architectures, or delegate the integrity checks to a dedicated machine running the applicable OS/platform architecture.<br />
<br />
Up to this point any failure in checking configuration compatibility or the Eiffel compilation, will be reported to the library maintainer with a description of the cause or a compilation report. A failure at this point is cause for the library to be rejected and removed from the holding area. The library will not be integrated into the stable repository.<br />
<br />
== Integrity Checks Pt. 2 ==<br />
<br />
Even a library passing the first stage of integrity checks is still not integrated into the stable repository, but becomes a candidate for integration. The final check is to compile all libraries depending on the uploaded library for integrity, to strengthen code compatibility. Any dependent library with a set maximum version number lower than newly uploaded library will not be checked or compiled, only those eqaul to or greater than because the newly uploaded library will be used by the latter. All dependent libraries are compiled before taking any action to ensure a more consice report to the library maintainer, in the event of an error.<br />
<br />
Once all of the dependent libraries have been compiled against the new library, still in the holding area, the server will check each library's compilation record for failures. On one or more failures the uploaded library's maintainer will be emailed with a call to respond regarding what action to take. The new library may have introduced breaking changes and as such is considered to be a correct library fit for integration to the stable repository. On the the other hand the library author may have made a mistake, breaking other code in the repository and wants to fix this. The maintain will respond to the email by selecting either a "Expected breaking changes, notify all dependent library authors (breaking change)" or "I'll fix it (recommended)" links, with a list of libraries unable to compile. The former indicates to the repository the broken compilation was to be expected due to a breaking change. The cause of this will set all dependent libraries with a maximum version number to the previous version of the uploaded library, as it is known to compile. All maintainers of the dependent libraries, no longer able to compile with the current version, are emailed with with compilation error information and a message indicating the actions taken. The uploaded library is then integrated into the stable repository and now multiple versions of it exist there. However, in the case the uploaded library maintainer opts to fix the library the library is rejected and is removed from the holding area. It is expected a new version of the library be uploaded and all checks performed again.</div>Paulbhttps://dev.eiffel.com/index.php?title=Repository_Name_Suggestions&diff=12602Repository Name Suggestions2009-06-15T20:20:30Z<p>Paulb: Added initial page</p>
<hr />
<div>[[Category:Eiffel Library Repository]]<br />
<br />
This page is dedicated to suggestions for names of the [[:Eiffel Library Repository|Eiffel Library Repository]] and/or the [[Repository Packages|packages]].<br />
<br />
== Suggestions ==<br />
<br />
* Warehouse and Girders: - Based on the idea of Eiffel, Gustave Eiffel and the Eiffel Tower the [[Repository Packages|packages]] could be name either simply '''Packages''' or '''Girders''' (the building blocks). and the repository the '''Warehouse''' (where the girders are stored and taken from to build)<br />
* Gustave - For the packing tool or other build tools.</div>Paulbhttps://dev.eiffel.com/index.php?title=Category:Eiffel_Library_Repository&diff=12601Category:Eiffel Library Repository2009-06-15T20:13:27Z<p>Paulb: </p>
<hr />
<div>Here at [http://www.eiffel.com Eiffel Software] we are planning something big and exciting that we hope will exponentially grow the availability and contribution of libraries for Eiffel, and before anything really gets started we wanted the most important feedback for a community focused project - community feedback.<br />
<br />
We are in the very early stages of planning so this is your chance to put forth ideas and comments of what you would like to see and how you would like this to work.<br />
<br />
We believe Eiffel would benefit from a centralized '''Eiffel Library Repository''' and an accompanying tool set for querying, downloading, and uploading prepackaged libraries. In the same vein popular Linux distributions use package managers, the Eiffel Compiler should be able to reference a library using a human readable, location agnostic, versioned library, and everything else is done for you, such as actually resolving the location of the library. We want the process to be as simple as possible so user interaction would be kept to a minimum. <br />
<br />
This category is links to the various topics being designed or thought out to being implementation of a repository.</div>Paulbhttps://dev.eiffel.com/index.php?title=Category:Eiffel_Library_Repository&diff=12600Category:Eiffel Library Repository2009-06-15T20:10:18Z<p>Paulb: </p>
<hr />
<div>Here at [http://www.eiffel.com Eiffel Software] we are planning something big and exciting that we hope will exponentially grow the availability and contribution of libraries for Eiffel, and before anything really gets started we wanted the most important feedback for a community focused project - community feedback.<br />
<br />
We are in the very early stages of planning so this is your chance to put forth ideas and comments of what you would like to see and how you would like this to work.<br />
<br />
We believe Eiffel would benefit from a centralized '''Eiffel Library Repository''' and an accompanying tool set for querying, downloading, and uploading prepackaged libraries. In the same vein popular Linux distributions use package managers, the Eiffel [[Category:Compiler|compiler]] should be able to reference a library using a human readable, location agnostic, versioned library, and everything else is done for you, such as actually resolving the location of the library. We want the process to be as simple as possible so user interaction would be kept to a minimum. <br />
<br />
This category is links to the various topics being designed or thought out to being implementation of a repository.</div>Paulbhttps://dev.eiffel.com/index.php?title=Category:Eiffel_Library_Repository&diff=12599Category:Eiffel Library Repository2009-06-15T20:10:01Z<p>Paulb: </p>
<hr />
<div>Here at [http://www.eiffel.com Eiffel Software] we are planning something big and exciting that we hope will exponentially grow the availability and contribution of libraries for Eiffel, and before anything really gets started we wanted the most important feedback for a community focused project - community feedback.<br />
<br />
We are in the very early stages of planning so this is your chance to put forth ideas and comments of what you would like to see and how you would like this to work.<br />
<br />
We believe Eiffel would benefit from a centralized '''Eiffel Library Repository''' and an accompanying tool set for querying, downloading, and uploading prepackaged libraries. In the same vein popular Linux distributions use package managers, the Eiffel [[Cateogory:Compiler|compiler]] should be able to reference a library using a human readable, location agnostic, versioned library, and everything else is done for you, such as actually resolving the location of the library. We want the process to be as simple as possible so user interaction would be kept to a minimum. <br />
<br />
This category is links to the various topics being designed or thought out to being implementation of a repository.</div>Paulbhttps://dev.eiffel.com/index.php?title=Integrity_Checks&diff=12598Integrity Checks2009-06-15T20:05:51Z<p>Paulb: Added initial page</p>
<hr />
<div>{{UnderConstruction}}<br />
[[Category:Eiffel Library Repository]]<br />
[[Category:EiffelStudio]]<br />
<br />
Integrity checks are part of the [[Repository Server]]'s ability to ensure cohesiveness of an uploaded [[Category:Eiffel Library Repository|Eiffel Library Repository]] [[Repository Package|package]].<br />
<br />
== Integrity Checks Pt. 1 ==<br />
<br />
There are a number of integrity checks to be performed on any library. All checks are static, in that configuration data is checked or compilations are made. Integrity checks do no perform any unit tests because these run-time (dynamic), regression checks should be performed by the library maintainer before the library is uploaded. It is uncertain just how many and how long such unit tests may take run which could significantlly delay the migration of a library from the holding area to the repository.<br />
<br />
The very first checks to make are to ensure the uploaded library's configuration is compatible with all dependent libraries. Libraries may support one, some or all platforms so it is imperitive this information is checked first because compilation will not succeed if there are supported/unsupported platform differences. For instance, the WEL is a Windows specific library. A library author could be finishing up development of a platform independent library on Windows, which has already been developed for various *nix platforms. To support Windows a reference to the WEL was added in the library ECF, but added unconditionally. The library compiles on Windows just fine and did compile on all *nix platforms. The author then uploads the library. The library will no longer compile on any other platforms except Windows because of the unconditioned reference to the WEL. The same configuration checks will be needed to ensure Void-Safe and non-Void-Safe libraries, unless the repository supports only Void-Safe libraries. Finally all referenced libraries need to be checked to ensure they exist in the repository. It is possible to reference a library is removed at some point and those libraries need to update. <br />
<br />
After the library fundamentals have been checked the uploaded library will built, if there is an associated build script. If the build script succeeds in building the library's platform specifics then an Eiffel compilation will be performed, compiling all classes in the library. All classes are compiled to ensure all classes are usable, by anyone choosing to consume the library in their project, and there are no junk classes in a library. Only an Eiffel compilation is performed and used for integrity checks, rather than on including a C compilation, because it will be impossible to guarentee all external, optional dependencies exist on the repository server (or the server performing the checks.)<br />
<br />
All compilations can be performed on the same server, given enough resources, or in a cloud managed by Eiffel Software. Servers will either utilize virtualization and guest OSs and specific platform architectures, or delegate the integrity checks to a dedicated machine running the applicable OS/platform architecture.<br />
<br />
Up to this point any failure in checking configuration compatibility or the Eiffel compilation, will be reported to the library maintainer with a description of the cause or a compilation report. A failure at this point is cause for the library to be rejected and removed from the holding area. The library will not be integrated into the stable repository.<br />
<br />
== Integrity Checks Pt. 2 ==<br />
<br />
Even a library passing the first stage of integrity checks is still not integrated into the stable repository, but becomes a candidate for integration. The final check is to compile all libraries depending on the uploaded library for integrity, to strengthen code compatibility. Any dependent library with a set maximum version number lower than newly uploaded library will not be checked or compiled, only those eqaul to or greater than because the newly uploaded library will be used by the latter. All dependent libraries are compiled before taking any action to ensure a more consice report to the library maintainer, in the event of an error.<br />
<br />
Once all of the dependent libraries have been compiled against the new library, still in the holding area, the server will check each library's compilation record for failures. On one or more failures the uploaded library's maintainer will be emailed with a call to respond regarding what action to take. The new library may have introduced breaking changes and as such is considered to be a correct library fit for integration to the stable repository. On the the other hand the library author may have made a mistake, breaking other code in the repository and wants to fix this. The maintain will respond to the email by selecting either a "Expected breaking changes, notify all dependent library authors (breaking change)" or "I'll fix it (recommended)" links, with a list of libraries unable to compile. The former indicates to the repository the broken compilation was to be expected due to a breaking change. The cause of this will set all dependent libraries with a maximum version number to the previous version of the uploaded library, as it is known to compile. All maintainers of the dependent libraries, no longer able to compile with the current version, are emailed with with compilation error information and a message indicating the actions taken. The uploaded library is then integrated into the stable repository and now multiple versions of it exist there. However, in the case the uploaded library maintainer opts to fix the library the library is rejected and is removed from the holding area. It is expected a new version of the library be uploaded and all checks performed again.</div>Paulbhttps://dev.eiffel.com/index.php?title=Category:Eiffel_Library_Repository&diff=12597Category:Eiffel Library Repository2009-06-15T19:59:51Z<p>Paulb: Added page</p>
<hr />
<div>Here at [http://www.eiffel.com Eiffel Software] we are planning something big and exciting that we hope will exponentially grow the availability and contribution of libraries for Eiffel, and before anything really gets started we wanted the most important feedback for a community focused project - community feedback.<br />
<br />
We are in the very early stages of planning so this is your chance to put forth ideas and comments of what you would like to see and how you would like this to work.<br />
<br />
We believe Eiffel would benefit from a centralized Eiffel library repository and an accompanying tool set for querying, downloading, and uploading prepackaged libraries. In the same vein popular Linux distributions use package managers, the Eiffel compiler should be able to reference a library using a human readable, location agnostic, versioned library, and everything else is done for you, such as actually resolving the location of the library. We want the process to be as simple as possible so user interaction would be kept to a minimum. <br />
<br />
This category is links to the various topics being designed or thought out to being implementation of a repository.</div>Paulbhttps://dev.eiffel.com/index.php?title=Category:Eiffel_Library_Repository&diff=12596Category:Eiffel Library Repository2009-06-15T19:58:04Z<p>Paulb: New page: Here at Eiffel Software we are planning something big and exciting that we hope will exponentially grow the availability and contribution of libraries for Eiffel, and before anything reall...</p>
<hr />
<div>Here at Eiffel Software we are planning something big and exciting that we hope will exponentially grow the availability and contribution of libraries for Eiffel, and before anything really gets started we wanted the most important feedback for a community focused project - community feedback.<br />
<br />
We are in the very early stages of planning so this is your chance to put forth ideas and comments of what you would like to see and how you would like this to work.<br />
<br />
We believe Eiffel would benefit from a centralized Eiffel library repository and an accompanying tool set for querying, downloading, and uploading prepackaged libraries. In the same vein popular Linux distributions use package managers, the Eiffel compiler should be able to reference a library using a human readable, location agnostic, versioned library, and everything else is done for you, such as actually resolving the location of the library. We want the process to be as simple as possible so user interaction would be kept to a minimum. <br />
<br />
This category is links to the various topics being designed or thought out to being implementation of a repository.</div>Paulbhttps://dev.eiffel.com/index.php?title=EiffelStudio_6.4_Releases&diff=12567EiffelStudio 6.4 Releases2009-05-27T21:34:17Z<p>Paulb: /* Improvements */</p>
<hr />
<div>[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}<br />
<br />
= EiffelStudio 6.4.x Releases=<br />
<br />
==6.4.x==<br />
Placeholder for new stuff since last intermediate release. <br />
===New features===<br />
===Improvements===<br />
* studio: Added completion of attribute...end to the editor, with preferences.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
* studio: Fixed GTK locking issue when exiting the debugger.<br />
* studio: Fixed completion issue crashing when rapidly editing and filtering the list.<br />
* studio: Fixed automatic scrolling of the testing output tool.<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.8765 (May 19th 2009)==<br />
===New features===<br />
* studio: Completion now has a feature/class description tool tip (on by default)<br />
* Promoted the dynamic API wrapper framework to a library.<br />
* runtime: added support for void-safe SPECIAL but EiffelBase is still using the non-void-safe version.<br />
<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
* studio: Fixed non-Windows bug where transition windows didn't appear due to GTK deferring GUI manipulation events.<br />
* compiler: Fixed eweasel test#incr322 and test#final079 which caused a crash during finalization of a call to a deferred routine implemented as an attribute with a body or some assertions.<br />
* compiler: Fixed bug#15798 by avoiding register propagation that does not work well when combined with multidot call chain (see test#attach065).<br />
* runtime: Allowed for `attached' and `detachable' for creating types at runtime (previously it only supported ? and ! which are now obsolete).<br />
* debugger: Fixed bug#15772 and bug#15772 where evaluating expressions involving ~ could yield the wrong result.<br />
* debugger: Fixed bug#15134: Step Into goes to wrong line in debugger after sequence of changes.<br />
<br />
===User changes===<br />
*{{Red|time: DATE_TIME_VALUE is now a deferred class}}<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.8600 (May 10th 2009)==<br />
===New features===<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed eweasel test#term177 where having some routines using anchors to arguments from a non-generic class used in a generic class where a formal generic parameter is given as argument would cause the compiler to crash.<br />
* compiler: Fixed eweasel test#term176 and test#incr323 where if you have a syntax error at degree 5 then the compiler would misbehave after fixing the syntax error.<br />
* compiler: Fixed bug#15761 when an object test local was not set in the generated C code if the source is a creation expression (test#attach064).<br />
<br />
===User changes===<br />
* net: Renamed privately exported `make_from_fd' to `make_from_descriptor_and_address'.<br />
* compiler: Ensured that particular options specified in the library cannot be overridden in a project, because they apply to the source code (e.g., specify a variant of a syntax) rather than to the code generation (e.g., specify which assertions have to be monitored).<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.8493 (May 4th 2009)==<br />
===New features===<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*debugger: fixed bug#15557: Empty value shifts the popup window in Watch tool<br />
*debugger: fixed recently introduced bug related to expression evaluation and conditional breakpoints.<br />
*debugger: Prevented crash from "bug#15693: catcall and segfault produced" by handling erroneous cases in the debugger.<br />
*debugger: fixed bug#15708: Incorrect VUOT error being reported in debugger watch window<br />
*runtime: Fixed eweasel test#expanded008 and bug#15693 where if you had an expanded with references attributes then the garbage collector would not update the internal references of the expanded and cause some memory corruption.<br />
*install: Fixed incorrect link for compatibility mode of EiffelStudio on Windows.<br />
*install: Fixed improper COM registration of .NET consumer preventing compilation of .NET projects.<br />
*compiler: Fixed broken generation of single threaded DLL.<br />
*net: Made compilable in void-safe mode since new compiler is detecting errors that previous compiler did not catch.<br />
*build: Fixed bug#15578 in EiffelBuild which causes it to report an exception trace when it should not. This was due to a bug introduced in our preference library which also was showing hidden preferences if no default value was provided in the configuration file.<br />
<br />
===User changes===<br />
*process: File redirection in the process library will now append to a file rather than recreating it.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.8382 (April 27th 2009)==<br />
===New features===<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*debugger: fixed recently introduced bug#15610: Feature call on void target in {DBG_EXPRESSION_EVALUATOR_B}.is_boolean_expression in EiffelStudio.<br />
*debugger: fixed bug#15669 Feature call on void target in {AST_DEBUGGER_BREAKABLE_STRATEGY}.initialize_current_context<br />
*debugger: improved support for object test locals<br />
*runtime: Fixed a non-detection of stack overflow in a multithreaded application on Linux.<br />
<br />
===User changes===<br />
* compiler: Incremented ECF XML schema version to reflect the recent changes.<br />
* compiler: Replaced ECF schema attribute ''syntax_level'' of an integer type with ''syntax'' of a string type that contains one of the three possible values.<br />
* compiler: Replaced ECF schema attribute ''is_void_safe'' of a boolean type with ''void_safety'' of a string type that contains one of the three possible values (''none'' - no void safety checks, ''all'' - all void safety checks, ''initialization'' - on-demand void safety checks, i.e. only for entities that are attached).<br />
* compiler: Application options are applied after applying options specified in the library when option ''Use application options'' is set to true.<br />
* {{Red|compiler: Added compatibility for recognizing code using `infix/prefix' instead of `alias'.}}<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.8212 (April 13th 2009)==<br />
===New features===<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed bug#15570 that caused the compiler to crash or misbehave when redeclaring a feature that has object tests in both preconditions and postconditions (test#attach061).<br />
*studio: Fixed bug#15550 that object test local of a expression type wasn't formatted correctly in flat view.<br />
*studio: Fixed bug#15092: Adding pre-compilation task with empty command causes config file parse error.<br />
*studio: Fixed bug#15584: Search report does not support standard shortcuts available elsewhere.<br />
*studio: Fixed bug#15590 that "~" and "/~" were not highlighted as operators in the editor.<br />
*compiler: Fixed eweasel test#melt012 where if you have a routine with a rescue clause where an exception is raised while executing the compound of a 'when' clause the interpreter stack would get corrupted.<br />
*compiler: Fixed a bug on Windows where including some Eiffel multithreaded code in a DLL would cause a crash. This was due to the way we compiled our Thread Local Storage using a Microsoft optimization that only works for normal binaries, not DLLs.<br />
*compiler: Fixed eweasel test#melt085 and test#melt086 where using Precursor in a manifest array, manifest tuple or expression of an object test would cause a crash at runtime.<br />
*runtime: Fixed eweasel test#thread003 and test#thread007 where you could have a memory corruption at runtime when calling {THREAD}.join and no children threads have been launched yet.<br />
*runtime: Fixed test#thread008 where you could have a memory corruption at runtime when calling {MEMORY}.find_referers.<br />
*runtime: Fixed test#thread002 where early termination of parent threads could corrupt memory if children thread are still alive.<br />
*base: Fixed INTERNAL so that `set_reference_field' can be used to set a reference attribute to Void if the attribute is detachable.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.8090 (April 6th 2009)==<br />
Placeholder for new stuff since last intermediate release. <br />
===New features===<br />
* EiffelParse: void-safe, added void-safe example.<br />
<br />
===Improvements===<br />
*profiler: provides better precision of profiler result and standardized internal computation of the profiler to be independent of the platform on which profiling is done.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*debugger: better handling of object test locals in debugger (the scopes are not yet supported, and then object test with same name might cause trouble in watch tool).<br />
*runtime: Fixed eweasel test#exec310 and bug#14477 where if you have a class name that is longer than 512 bytes or an attribute name longer than 512 bytes and you call `out' it would cause a buffer overflow.<br />
*runtime: Fixed an unnoticeable performance issue with the C storable/retrieval mechanism (bug#14495).<br />
*runtime: Fixed incorrect display of NATURAL_32 attributes when calling `out' (fixes eweasel test#exec298 and bug#13862.<br />
*runtime: Fixed eweasel test#exec300 and test#store022 with the processing of deep_twin/deep_equal/store/retrieve of an expanded object.<br />
*runtime: Fixed eweasel test#exec311 where profiling with invariant checking enabled would cause a profiler failure (profile stack botched).<br />
*runtime: Fixed eweasel test#melt091 where if you somehow end up melting the code of STRING and that you have melted code that creates a manifest string it will cause the interpreter to crash.<br />
*studio: Fixed bug#15546: Can't get a flat view of a compiled class.<br />
*studio: Fixed bug#13986: Locale list becomes empty after "Restore defaults" action.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.7957 (March 29th 2009)==<br />
===New features===<br />
*{{Red|base: Implemented {EXCEPTION}.cause which returns the exception object that caused current exception in rescue execution.}}<br />
*{{Red|compiler: Added support for detecting Mac OS X and VxWorks target compilation.}}<br />
<br />
===Improvements===<br />
*encoding: Cached the conversion descriptors on Unix systems to avoid many `iconv_open' calls, which increases performance by around 25% - 300% depending on platforms.<br />
*net: Added ability to only listen on the loopback address in NETWORK_STREAM_SOCKET.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
* studio: Fixed bug#15516: Error tool reshuffles needlessly.<br />
* studio: Errors reported by one subsystem and then taken over by another now retain the previous selection in the error list tool.<br />
* studio: Fixed some crashes when trying to execute tests for which there is no .exe or trying to open documentation from EiffelStudio and Firefox cannot open the links (fixed bug#15556).<br />
* {{Red|base: Fixed the inconsistent behaviors of {EXCEPTIONS}.original* with 5.7 potentially breaking code using exceptions}}.<br />
* compiler: Fixed eweasel test#exec151 where exceptions triggered in workbench mode where you have a mix of melted and frozen code could corrupt the stack.<br />
* compiler: Fixed eweasel test#except035 by manually raising an exception if on Solaris based OS we read EOF and the file is either stdout or stderr. Other platforms remain unchanged.<br />
*{{Red|net: Fixed some issues with the EiffelNet library when trying to listen for either any address or the loopback address in both IPv4 and IPv6 mode on Windows. It also solves a security issue since if you have IPv6 enabled, then listening to the loopback would also listen to any address on the IPv4 interface. This is a Windows only bug.}}<br />
<br />
===User changes===<br />
* compiler: Relaxed note element in .ecf to accept anything.<br />
* studio: Changed EIS to use note element in ecf in this style: <note><eis name="NAME1"><eis name="NAME2"></note><br />
<br />
===Developer changes===<br />
<br />
==6.4.7.7848 (March 23rd 2009)==<br />
===New features===<br />
===Improvements===<br />
*studio: Better formatting of verbatim strings, that guarantees that copy/pasting from the formatted text will yield the same string content as the one in the Eiffel source code.<br />
*base: Changed IO_MEDIUM.last_string to be attached so that existing code can easily be migrated to void-safe without changes in the pattern `read_line/last_string'.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*{{Red|runtime: Improved signal handling to use more recent APIs when available. It especially fixes issue on Solaris where a signal handler was not reinstated after a SIGSEGV signal. It fixes eweasel test#except029.}}<br />
*{{Red|runtime: Fixed a bug with exception generated during the evaluation of a once in melted mode. This fixes eweasel test#except014 and test#except030.}}<br />
*runtime: Worked around a bug in the Sun C compiler which caused the creation of SPECIAL in melted code to always fail when runtime is compiled with optimizations. It fixes eweasel test#melt070, test#melt081, test#term139, test#store014 and test#tuple006.<br />
*runtime: Fixed a potential infinite loop when exiting a crash application when while quitting a signal is received which cause our last print statement to also fail (case of SIGPIPE), then it will infinitely repeat that sequence. This fixes the issue where eweasel test#vsrp208, although it was passing, ec was still using 100% CPU.<br />
*finish_freezing: Fixed various bugs introduced at rev#77762.<br />
*{{Red|compiler: Fixed eweasel test#syntax042 and test#syntax047 as well as bug#15514 that allowed invalid characters in new C external specification. Removed generation of error when trying the old syntax, the syntax error will be based in the new syntax now. Added generation of warnings when using the old syntax and warnings are enabled.}}<br />
*{{Red|compiler: Fixed eweasel test#final077 where the arguments passed to a creation expression where not properly processed when analyzing expressions. This caused the following instruction: "<e>l_x := x.y.z (create .make (l_x))</e>" to override the value of `l_x' with the value of `x.y' which is wrong.}}<br />
*studio: Fixed a bug where EiffelStudio would not see that the class text has changed while reporting an error and thus shows the text as it was last seen by EiffelStudio at the previous error reporting.<br />
<br />
===User changes===<br />
*base: Explicitly excluded non-void safe classes from the void-safe version of EiffelBase. The list of excluded classes are:<br />
:* COMPACT_CURSOR_TREE<br />
:* LINKED_CURSOR_TREE<br />
:* TWO_WAY_CURSOR_TREE<br />
:* COMPACT_TREE_CURSOR<br />
:* LINKED_CURSOR_TREE_CURSOR<br />
:* TWO_WAY_CURSOR_TREE_CURSOR<br />
<br />
===Developer changes===<br />
*compiler: Improved parser and changed factories so that we get proper position information for strings and verbatim strings.<br />
*compiler: Improved parser benchmark tool so that one can provide the proper type of parser (obsolete, transitional, standard).<br />
<br />
==6.4.7.7762 (March 17th 2009)==<br />
===New features===<br />
*ec: Added command line version of auto test (not available with ecb)<br />
*net: Unix part of EiffelNet is now also void-safe.<br />
<br />
===Improvements===<br />
* debugger: watch tool now support object test locals in expression<br />
* compiler: Conformance checks do not take attachment status of types into account for void-unsafe code.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
* studio: Supported new attached syntax for code completion.<br />
* studio: Replaced documentation generation marks !/? with attached/detachable keywords.<br />
* compiler: Fixed potential issue which prevents error/warning source lines from being displayed.<br />
* compiler: Fixed eweasel test#agent004 and test#agent010 by ensuring the result type of the agent is properly instantiated in the agent target type context.<br />
* compiler: Fixed eweasel test#incr321 when if you finalize after removing a class from the system, then execution of workbench code fails.<br />
* debugger: Fixed bug#15494: Cannot eval detached expression (i.e VUTA error)<br />
* debugger: display object test locals declared without type (i.e: attached foo as x)<br />
* c_compiler: Updated to newer version of the MSYS DLL so that it should also work on Windows Vista 64-bit.<br />
<br />
===User changes===<br />
* studio: set the project name in status bar, when we load a configuration (i.e: even before any compilation)<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.7646 (March 9th 2009)==<br />
===New features===<br />
* compiler: supported explicitly defined "stable" attributes. Stable attribute is an attribute of a detachable type that is never assigned void. This property makes it possible to apply to it most of the CAP rules suitable for read-only entities. The stable attributes can be declared using value ''stable'' of the note tag ''option'', for example: <e><br />
a: detachable MY_TYPE note option: stable attribute end</e><br />
<br />
===Improvements===<br />
*Made the code of the Eiffel Matrix generator generates code that compiles without warnings.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*base: Fixed eweasel test#list003 where calling copy on a non-empty LINKED_LIST and providing the same list as argument would wipe out the content of the LINKED_LIST instead of preserving the elements.<br />
*base: Fixed eweasel test#list014 where calling `merge_left' and `merge_right' on a TWO_WAY_LIST was violating the invariant.<br />
*base: Fixed eweasel test#array005 where calling `wipe_out' on an ARRAY2 was violating the invariant.<br />
*install: Fixed missing distribution of `syntax_updater' tool on Unix.<br />
*dotnet: Fixed a crash while compiling a .NET system in void-safe mode when the class inherited from a .NET class.<br />
*dotnet: Fixed bug in .NET code generation where if you do not specify a version of the .NET runtime in your config file, it will always use .NET 1.0 if installed causing the .NET metadata consumer to fail since it is compiled against v2.0 of .NET.<br />
*install: Fixed a bug in the Makefile.SH needed to compile the C code of our Eiffel libraries which could cause the C compilation to fail on a multiprocessor machine.<br />
*syntax_updater: Fixed a bug when converting a class that contains an attribute with an assign clause as well as an attribute clause (See updated eweasel test#rdtp001).<br />
*{{red|store: Fixed bug#15470 introduced in 6.3 where some HASH_TABLE lookups failed because HASH_TABLE is now using `~' instead of `is_equal'. Now EiffelStore uses `same_string' to compare the keys of the HASH_TABLE}}<br />
*studio: Fixed bug#15447 where selecting the properties entry for the context menu would cause a crash.<br />
*debugger/studio: fixed bug#15232: Loop variants mess up debugger step-through<br />
*debugger: Fixed bug#15300: Objects Tab<br />
<br />
===User changes===<br />
*gobo: For the remaining of the 6.4 development, we are now using the latest version of the Gobo source code.<br />
<br />
===Developer changes===<br />
*consumer: The .NET consumer is now compiled in void-safe mode. Changed the GUID of the COM component and version, that way it is easy to switch between the old and new consumer.<br />
<br />
==6.4.7.7440 (March 2nd 2009)==<br />
===New features===<br />
*libraries: Have been updated to the new object test syntax.<br />
<br />
===Improvements===<br />
*compiler: speed up C compilation of E1/eskelet.c in workbench mode when using VS 2005 C++ in 64-bit. We went from a benchmark of 3 minutes down to 1 minute. It is definitely a bug in VS since their 32-bit version compiles the same code in just a matter of a few seconds.<br />
*compiler: Improved speed of error generation by caching certain disk access operations.<br />
*studio: Vastly improved population of the error list tool when thousands or errors/warnings are generated.<br />
*studio: Error list now shows a synchronization message (Windows only) when displaying the tool for the first time after a compilation.<br />
*studio: Errors are now shown first in the error list tool, for better visibility.<br />
*{{Red|compiler: Taken into account attachment status of formal generic constraints when checking conformance and detecting VUTA errors when target type is a formal generic.<br />
:'''Important:''' default attachment status of the constraints follows the "attached-by-default" setting, so the code might need to be updated by adding a detachable mark in front of the formal generic constraints if the actual generic parameters can be detachable types.}}<br />
*compiler: we now check that `is_equal' exists in ANY.<br />
*compiler: Fixed bug#15343 when backups where very large if you referenced many .NET assemblies even when not compiling for .NET.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*runtime: Fixed eweasel test#conform008 where creating an attached formal generic parameter of a generic type whose actual generic parameter is a TUPLE type would not create the proper TUPLE type.<br />
*debugger: fixed bug#15218: ~ not supported in the watch window.<br />
*debugger: improved/fixed expression evaluation related to `a = b' and `a ~ b'. As well conditional breakpoint of type `Has Changed'<br />
*compiler: Supported detection of VUTA(2) errors for unary and binary operators.<br />
*compiler: Fixed multiple issues with validity checks involving multi-constraint formal generics and "like Current" types.<br />
*compiler: Fixed system validity errors which were not previously detected or on the other hand rejected when it was correct. Fixes eweasel tests test#svalid019, test#svalid020 and test#multicon051.<br />
*compiler: Fixed incorrect C code generation when calling routine of a generic class under some circumstances (see eweasel test#ccomp040 and test#ccomp083, it fixes bug#15375).<br />
*compiler: Fixed bug with {SPECIAL}.put_default which did not insert the correct object for expanded generic derivations of SPECIAL. It fixes eweasel test#exec283 and test#catcall007.<br />
*compiler: Fixed improper precedence of the new object test syntax. It fixes eweasel test#syntax056 and test#attach053.<br />
*runtime: Fixed various memory corruption when manipulation large SPECIAL (i.e. whose actual size is greater than 4GB).<br />
<br />
===User changes===<br />
*general: Updated all our libraries to use the new object test syntax.<br />
*favorites: Data is now kept in project's session data; favorites are kept even after a recompilation from scratch.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.7252 (February 23rd 2009)==<br />
===New features===<br />
*compiler: Added support for the new syntax for object test, i.e. <e>attached {T} exp as u</e> instead of <e>{u: T} expr</e><br />
*syntax_updater: Syntax updater will convert the old syntax for object test to the new one, and will also perform some optimizations, such as transforming <e>{t: like x} x</e> into just <e>attached x as t</e>.<br />
<br />
===Improvements===<br />
*compiler: Supported object tests using the same object test local name in a single feature provided that their scopes do not conflict.<br />
*compiler: speed up parsing time in compiler that can provide about 3% speed up.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*runtime: Fixed bug#15280 and eweasel test#except034 that {EXCEPTION_MANAGER}.last_exception not cleared after successful retry if melted.<br />
*compiler: Correctly reported VEVI error for attributes initialized from a creation procedure by calling a once routine because the latter is not guaranteed to be executed on subsequent calls.<br />
*debugger: Fixed bug#15384: Debugger does not step at correct position (related to require else...)<br />
*debugger: now the debugger remembers correctly the breakpoint, even when recompiling from scratch.<br />
*compiler: Fixed some issues with non-conforming inheritance (bug#15224)<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.7062 (February 9th 2009)==<br />
===New features===<br />
* Eiffel2Java: void-safe, added void-safe example.<br />
* EiffelWeb: void-safe.<br />
<br />
===Improvements===<br />
*compiler: attached attribute initialization in creation procedures is now detected not only by inspecting the top-level instructions, but also the nested complex instructions with several possible execution paths, like conditional instruction, multi-branch, etc.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*testing: Fixed a bug where minimization of test was not done resulting in very large regression tests.<br />
*compiler: Fixed eweasel test#attach047 where type of array of string passed as argument to the creation procedure of the root class should have an attached actual argument type.<br />
*compiler: Fixed eweasel test#svalid018 where a crash occurred in `process_converted_expr_as' because we failed to verify that the expression still compiles fine even if inherited, because although it might compile fine in the ancestor, in the descendant it might not if they use a different set of options (e.g. non-void-safe in parent and void-safe in descendant).<br />
*eiffelweb: Fixed issue with `hexa_to_ascii' to make sure we process correctly even incorrectly encoded URL. Added `insert_pair_without_encoding' and `parse_urlencoded_input'. Fixed input_data to return an empty string and not to report an error and the content_length is empty as it is permitted to do so.<br />
*eiffelweb: Fixed issue bug#15267 by inheriting from SHARED_STDIN and SHARED_STDOUT to provide `stdin' and `output' in CGI_IN_AND_OUT.<br />
<br />
===User changes===<br />
*{{Red|base: Made several changes in EiffelBase so that the same version can be compiled in void-safe mode as well as in non-void safe mode. The code that might not be compile anymore is `create {CELL [SOME]}' because default_create is not a creation procedure anymore.}}<br />
<br />
===Developer changes===<br />
*studio: The Groups tool and Favorites tool are now based on ESF.<br />
*studio: Significant changes made in ESF tool foundations to further optimize startup and memory performance. Panels are no longer created unless the panel UI is actually needed.<br />
<br />
==6.4.7.6930 (February 2nd 2009)==<br />
===New features===<br />
*compiler: for enhanced backward compatibility with 6.3, estudio and ec/ecb have a new command line option `-compat' to launch EiffelStudio or the command line compiler with compilation settings compatible with those of 6.3. On Windows, you also have a new shortcut entry in the start menu for launching EiffelStudio in this compatibility mode.<br />
<br />
===Improvements===<br />
*compiler: Better explanation for VDPR(3) errors when two or more precursor are available by listing all the precursors.<br />
*compiler: Non-void arguments are now detected not only when they are specified in the voidness tests in immediate preconditions, but also in inherited ones.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed eweasel test#attach042 and test#attach043 where type of agent was incorrect when target was of type `like Current' or when the routine had no open arguments, in both cases the compiler generated detachable types when attached were expected.<br />
*compiler: Fixed some regressions eweasel test#fixed119 and test#incr318.<br />
*compiler: Fixed invalid precursor missed detection thus fixing eweasel test#valid117.<br />
*runtime: Fixed eweasel test#runtime011 were a memory corruption could occur when twining a SPECIAL or a TUPLE object under certain circumstances.<br />
*studio: Fixed a bug where editor will disappear when debugging.<br />
<br />
===User changes===<br />
*compiler: renamed VUPR errors to their ECMA name VDPR.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.6833 (January 26th 2009)==<br />
===New features===<br />
===Improvements===<br />
*wel: now void-safe<br />
*lex: now void-safe<br />
*encoding: now void-safe<br />
*process: now void-safe<br />
*time: added void-safe sample<br />
===Feature removed===<br />
===Bug fixes===<br />
*studio: Fixed bug#15253 where editor is missing from docking layout.<br />
*base: Fixed bug#15266 where we incorrectly merged the code value for {IO_EXCEPTION} and {RUNTIME_IO_EXCEPTION} thus breaking existing code not based on Eiffel exception object. (eweasel test#except035)<br />
*base: Fixed bug#15273 and eweasel test#except033 that an exception thrown through rescues caused infinite loop.<br />
*studio: Fixed the bug "Show disambiguated names" and "Show obsolete items" button on completion window did not function correctly and made tooltips on option buttons translatable.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.6747 (January 19th 2009)==<br />
===New features===<br />
===Improvements===<br />
*{{Red|base: Updated the IMMUTABLE_STRING classes to have an efficient string extraction query `shared_substring' which will let you create a substring of an existing immutable string without actually duplicating the data.}}<br />
*studio: Added option in the new library dialog to show only void-safe libraries, for void-safe projects.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed a bug with pre/post actions which were always executed regardless of the specified condition.<br />
*runtime: Fixed eweasel test#store020 where our recoverable store mechanism could not retrieve an object if it was generic and using a formal as actual generic parameter in a generic derivation using an expanded type. This is because in 6.2, we decided not to perform the instantiation of the attribute as it was not working properly when generic derivation is a generic expanded type. For the time being, if there is a mismatch where expected type is a FORMAL_TYPE, we try to instantiate it in the current processed type and if there is a match then we know it is ok, otherwise we reject the code. This also fixes bug#15256.<br />
*runtime: Fixed eweasel test#store019 where using the SED facilities to store/retrieve attributes which are attached would fail.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.6645 (January 12th 2009)==<br />
===New features===<br />
*studio: Added compile_all, syntax_updater and Eiffel image embedder tool to the EiffelStudio delivery. They are located under $ISE_EIFFEL/tools/spec/$ISE_PLATFORM/bin.<br />
*editor: Added `flush' to force a full load of texts.<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed bug#15235 where some C compilers do not like that we generate a C array of size 0.<br />
*compiler: Fixed correctly location reporting of error classes, using the location where the code is written which differs from the current class being analyzed.<br />
*compiler: Fixed bug#15139 by checking when parts of a multi-branch conditional instruction even when the inspect expression does not type check (see test#valid228).<br />
*compiler: Fixed test#attach039 by using written class when evaluating precursor features as the current feature may be inherited.<br />
*compiler: Fixed bug#15144 by checking that a self-initializing attribute is not processed recursively (see test#term169).<br />
*compiler: Fixed bug#15129 by using a mixed routine-attribute table for attributes that may be self-initializing (see test#final072).<br />
*studio: Fixed issue bug#15222 to respected existing note clause tags and values.<br />
*finish_freezing: Fixed typo reported in bug#15239.<br />
*net: Move definition of FD_SETSIZE before using the Windows header files so that we can really listen on 256 descriptors (breaking change introduced in the IPv6 version which is now the official).<br />
===User changes===<br />
*studio: Added EIS built-in variable "ISE_DOC_UUID" with value of "http://doc.eiffel.com/isedoc/uuid".<br />
===Developer changes===<br />
<br />
==6.4.7.6592 (January 5th 2009)==<br />
===New features===<br />
===Improvements===<br />
*studio: Automatic class licenser now preserves all other note clause terms when replacing a license in the class text.<br />
===Feature removed===<br />
===Bug fixes===<br />
*studio: Fixed reporting of feature errors to report the correct class name when referring to parent class errors.<br />
*studio: Fixed EIS tool broken by either compiler changes or improper attachment usage.<br />
*studio: Fixed a library target compiled as an application target was not editable by EIS.<br />
*studio: Fixed a bug that note elements were not properly setup when recomputing configuration, which caused missing of some EIS entries.<br />
===User changes===<br />
*{{red|net: The IPv6 version of the EiffelNet library is now the official one. The old one has been moved in the obsolete cluster.}}<br />
*{{red|compiler: The compiler now accepts <e>attribute</e> and <e>note</e> as keyword by default.}}<br />
*{{red|argument parser: The argument parser library introduces some breaking changes in deferred feature signatures due to the conversion to Void-Safe.}}<br />
*studio: Added built-in EIS variable "ISE_DOC" with value of "http://doc.eiffel.com".<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.6402 (December 27th 2008)==<br />
===New features===<br />
===Improvements===<br />
*compiler: speed up degree 6 by not looking at the content of all .e files to figure out the associated class name. We now assume on the first pass that the file name is the class name. On EiffelStudio, if none of the file were buffered, we went from about 1 minute spent to just less than 3 seconds. The improvement should be even more when classes are on a remote drive.<br />
*studio: Set current line number as initial line number of the Go to line dialog. This fixed bug#15193.<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed missing detection of VRFT errors in cases like "<e>a: TUPLE [a: TUPLE [out: INTEGER]]</e>". Fixes eweasel test#exec293.<br />
*compiler: Fixed catcall checker crashing when enabled. Fixes eweasel test#term166.<br />
*runtime: Fixed eweasel test#exec293 where accessing labels of a Void tuple would not cause a call on Void target exception.<br />
*studio: Fixed a bug that shortcut preferences with `+'/`Numpad +' could not be modified.<br />
<br />
===User changes===<br />
*compiler: now the compiler does not produce the class progress output in batch mode. If you want the old behavior, you have to use -verbose option.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.6313 (December 22nd 2008)==<br />
===New features===<br />
*base: Added `same_keys' to HASH_TABLE. You can redefine this feature to use a different comparison criterion for the keys.<br />
<br />
===Improvements===<br />
*compiler: Improved implementation of ~ and expanded comparison to use `is_equal' directly rather than using `equal'.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed eweasel test#exec292 where type of inherited formals where incorrectly interpreted in descendants.<br />
*base: Fixed a bug that would not recognize a class name A_SOMETHING as a valid identifier for INTERNAL.<br />
*studio: New library dialog now correctly sorts the contents base on the library name and not the path.<br />
*studio: Fixed bug#15173: EiffelStudio crash when selecting library<br />
*runtime: Fixed eweasel test#runtime010 where certain allocation patterns could cause a major slow down during a garbage collection cycle.<br />
<br />
===User changes===<br />
*{{Red|base: We do not use <e>is_equal</e> in EiffelBase, but instead the ~ operator. This could break some of your code, especially with HASH_TABLE.}}<br />
<br />
===Developer changes===<br />
<br />
==6.4.76164 (December 15th 2008)==<br />
===New features===<br />
* studio: In-grid-item selection in Error List tool.<br />
* editor: Customizing some editor attributes, fonts, line height and etc., per instance.<br />
<br />
===Improvements===<br />
*studio: Tabulated format of copied selection from the Error List tool.<br />
===Feature removed===<br />
===Bug fixes===<br />
*studio: Fixed bug#14237 where some manipulations on the UI could corrupt the EiffelStudio docking layout.<br />
*studio: Fixed bug#12453 where VYCQ error would print the feature name in blue rather than in green.<br />
*studio: Added a protection for bug#15116 where we could still try to access `content' while EiffelStudio has already destroyed the panel.<br />
*studio: Fixed bug#15073 that Pick and drop from output window didn't work when no class tool was available.<br />
*compiler: Fixed eweasel test#multicon050 where compiler did not handle renaming of a routine with an alias into a routine without one as it still thought the alias was available.<br />
*compiler: Added printing of referenced configuration file in which there is a conflict. This fixes bug#15099.<br />
*compiler: Fixed an incorrect VUTA(2) error being reported when compiling a static access call in void-safe mode. This fixes eweasel test#valid223.<br />
*compiler: Fixed an incrementality corruption (bug#15061 and eweasel test#incr296) which would occur a feature has an invalid signature for one failed compilation before it is fixed again.<br />
*compiler: Fixed bug#15027 where if you have a class which was originally only in an override cluster and then keep it in the override cluster but also now in a normal cluster, then we would not remove the compiled information from the override cluster which would cause in a later compilation the class to be forcibly removed from the system even though it is still in use.<br />
<br />
===User changes===<br />
*{{Red|base: it is now using the new alias syntax for operators instead of obsolete syntax based on `infix/prefix' keywords. As a result some of your code may not compile.}}<br />
===Developer changes===</div>Paulbhttps://dev.eiffel.com/index.php?title=EiffelStudio_6.4_Releases&diff=12566EiffelStudio 6.4 Releases2009-05-27T19:31:49Z<p>Paulb: /* 6.4.x */</p>
<hr />
<div>[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}<br />
<br />
= EiffelStudio 6.4.x Releases=<br />
<br />
==6.4.x==<br />
Placeholder for new stuff since last intermediate release. <br />
===New features===<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
* studio: Fixed GTK locking issue when exiting the debugger.<br />
* studio: Fixed completion issue crashing when rapidly editing and filtering the list.<br />
* studio: Fixed automatic scrolling of the testing output tool.<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.8765 (May 19th 2009)==<br />
===New features===<br />
* studio: Completion now has a feature/class description tool tip (on by default)<br />
* Promoted the dynamic API wrapper framework to a library.<br />
* runtime: added support for void-safe SPECIAL but EiffelBase is still using the non-void-safe version.<br />
<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
* studio: Fixed non-Windows bug where transition windows didn't appear due to GTK deferring GUI manipulation events.<br />
* compiler: Fixed eweasel test#incr322 and test#final079 which caused a crash during finalization of a call to a deferred routine implemented as an attribute with a body or some assertions.<br />
* compiler: Fixed bug#15798 by avoiding register propagation that does not work well when combined with multidot call chain (see test#attach065).<br />
* runtime: Allowed for `attached' and `detachable' for creating types at runtime (previously it only supported ? and ! which are now obsolete).<br />
* debugger: Fixed bug#15772 and bug#15772 where evaluating expressions involving ~ could yield the wrong result.<br />
* debugger: Fixed bug#15134: Step Into goes to wrong line in debugger after sequence of changes.<br />
<br />
===User changes===<br />
*{{Red|time: DATE_TIME_VALUE is now a deferred class}}<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.8600 (May 10th 2009)==<br />
===New features===<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed eweasel test#term177 where having some routines using anchors to arguments from a non-generic class used in a generic class where a formal generic parameter is given as argument would cause the compiler to crash.<br />
* compiler: Fixed eweasel test#term176 and test#incr323 where if you have a syntax error at degree 5 then the compiler would misbehave after fixing the syntax error.<br />
* compiler: Fixed bug#15761 when an object test local was not set in the generated C code if the source is a creation expression (test#attach064).<br />
<br />
===User changes===<br />
* net: Renamed privately exported `make_from_fd' to `make_from_descriptor_and_address'.<br />
* compiler: Ensured that particular options specified in the library cannot be overridden in a project, because they apply to the source code (e.g., specify a variant of a syntax) rather than to the code generation (e.g., specify which assertions have to be monitored).<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.8493 (May 4th 2009)==<br />
===New features===<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*debugger: fixed bug#15557: Empty value shifts the popup window in Watch tool<br />
*debugger: fixed recently introduced bug related to expression evaluation and conditional breakpoints.<br />
*debugger: Prevented crash from "bug#15693: catcall and segfault produced" by handling erroneous cases in the debugger.<br />
*debugger: fixed bug#15708: Incorrect VUOT error being reported in debugger watch window<br />
*runtime: Fixed eweasel test#expanded008 and bug#15693 where if you had an expanded with references attributes then the garbage collector would not update the internal references of the expanded and cause some memory corruption.<br />
*install: Fixed incorrect link for compatibility mode of EiffelStudio on Windows.<br />
*install: Fixed improper COM registration of .NET consumer preventing compilation of .NET projects.<br />
*compiler: Fixed broken generation of single threaded DLL.<br />
*net: Made compilable in void-safe mode since new compiler is detecting errors that previous compiler did not catch.<br />
*build: Fixed bug#15578 in EiffelBuild which causes it to report an exception trace when it should not. This was due to a bug introduced in our preference library which also was showing hidden preferences if no default value was provided in the configuration file.<br />
<br />
===User changes===<br />
*process: File redirection in the process library will now append to a file rather than recreating it.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.8382 (April 27th 2009)==<br />
===New features===<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*debugger: fixed recently introduced bug#15610: Feature call on void target in {DBG_EXPRESSION_EVALUATOR_B}.is_boolean_expression in EiffelStudio.<br />
*debugger: fixed bug#15669 Feature call on void target in {AST_DEBUGGER_BREAKABLE_STRATEGY}.initialize_current_context<br />
*debugger: improved support for object test locals<br />
*runtime: Fixed a non-detection of stack overflow in a multithreaded application on Linux.<br />
<br />
===User changes===<br />
* compiler: Incremented ECF XML schema version to reflect the recent changes.<br />
* compiler: Replaced ECF schema attribute ''syntax_level'' of an integer type with ''syntax'' of a string type that contains one of the three possible values.<br />
* compiler: Replaced ECF schema attribute ''is_void_safe'' of a boolean type with ''void_safety'' of a string type that contains one of the three possible values (''none'' - no void safety checks, ''all'' - all void safety checks, ''initialization'' - on-demand void safety checks, i.e. only for entities that are attached).<br />
* compiler: Application options are applied after applying options specified in the library when option ''Use application options'' is set to true.<br />
* {{Red|compiler: Added compatibility for recognizing code using `infix/prefix' instead of `alias'.}}<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.8212 (April 13th 2009)==<br />
===New features===<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed bug#15570 that caused the compiler to crash or misbehave when redeclaring a feature that has object tests in both preconditions and postconditions (test#attach061).<br />
*studio: Fixed bug#15550 that object test local of a expression type wasn't formatted correctly in flat view.<br />
*studio: Fixed bug#15092: Adding pre-compilation task with empty command causes config file parse error.<br />
*studio: Fixed bug#15584: Search report does not support standard shortcuts available elsewhere.<br />
*studio: Fixed bug#15590 that "~" and "/~" were not highlighted as operators in the editor.<br />
*compiler: Fixed eweasel test#melt012 where if you have a routine with a rescue clause where an exception is raised while executing the compound of a 'when' clause the interpreter stack would get corrupted.<br />
*compiler: Fixed a bug on Windows where including some Eiffel multithreaded code in a DLL would cause a crash. This was due to the way we compiled our Thread Local Storage using a Microsoft optimization that only works for normal binaries, not DLLs.<br />
*compiler: Fixed eweasel test#melt085 and test#melt086 where using Precursor in a manifest array, manifest tuple or expression of an object test would cause a crash at runtime.<br />
*runtime: Fixed eweasel test#thread003 and test#thread007 where you could have a memory corruption at runtime when calling {THREAD}.join and no children threads have been launched yet.<br />
*runtime: Fixed test#thread008 where you could have a memory corruption at runtime when calling {MEMORY}.find_referers.<br />
*runtime: Fixed test#thread002 where early termination of parent threads could corrupt memory if children thread are still alive.<br />
*base: Fixed INTERNAL so that `set_reference_field' can be used to set a reference attribute to Void if the attribute is detachable.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.8090 (April 6th 2009)==<br />
Placeholder for new stuff since last intermediate release. <br />
===New features===<br />
* EiffelParse: void-safe, added void-safe example.<br />
<br />
===Improvements===<br />
*profiler: provides better precision of profiler result and standardized internal computation of the profiler to be independent of the platform on which profiling is done.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*debugger: better handling of object test locals in debugger (the scopes are not yet supported, and then object test with same name might cause trouble in watch tool).<br />
*runtime: Fixed eweasel test#exec310 and bug#14477 where if you have a class name that is longer than 512 bytes or an attribute name longer than 512 bytes and you call `out' it would cause a buffer overflow.<br />
*runtime: Fixed an unnoticeable performance issue with the C storable/retrieval mechanism (bug#14495).<br />
*runtime: Fixed incorrect display of NATURAL_32 attributes when calling `out' (fixes eweasel test#exec298 and bug#13862.<br />
*runtime: Fixed eweasel test#exec300 and test#store022 with the processing of deep_twin/deep_equal/store/retrieve of an expanded object.<br />
*runtime: Fixed eweasel test#exec311 where profiling with invariant checking enabled would cause a profiler failure (profile stack botched).<br />
*runtime: Fixed eweasel test#melt091 where if you somehow end up melting the code of STRING and that you have melted code that creates a manifest string it will cause the interpreter to crash.<br />
*studio: Fixed bug#15546: Can't get a flat view of a compiled class.<br />
*studio: Fixed bug#13986: Locale list becomes empty after "Restore defaults" action.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.7957 (March 29th 2009)==<br />
===New features===<br />
*{{Red|base: Implemented {EXCEPTION}.cause which returns the exception object that caused current exception in rescue execution.}}<br />
*{{Red|compiler: Added support for detecting Mac OS X and VxWorks target compilation.}}<br />
<br />
===Improvements===<br />
*encoding: Cached the conversion descriptors on Unix systems to avoid many `iconv_open' calls, which increases performance by around 25% - 300% depending on platforms.<br />
*net: Added ability to only listen on the loopback address in NETWORK_STREAM_SOCKET.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
* studio: Fixed bug#15516: Error tool reshuffles needlessly.<br />
* studio: Errors reported by one subsystem and then taken over by another now retain the previous selection in the error list tool.<br />
* studio: Fixed some crashes when trying to execute tests for which there is no .exe or trying to open documentation from EiffelStudio and Firefox cannot open the links (fixed bug#15556).<br />
* {{Red|base: Fixed the inconsistent behaviors of {EXCEPTIONS}.original* with 5.7 potentially breaking code using exceptions}}.<br />
* compiler: Fixed eweasel test#exec151 where exceptions triggered in workbench mode where you have a mix of melted and frozen code could corrupt the stack.<br />
* compiler: Fixed eweasel test#except035 by manually raising an exception if on Solaris based OS we read EOF and the file is either stdout or stderr. Other platforms remain unchanged.<br />
*{{Red|net: Fixed some issues with the EiffelNet library when trying to listen for either any address or the loopback address in both IPv4 and IPv6 mode on Windows. It also solves a security issue since if you have IPv6 enabled, then listening to the loopback would also listen to any address on the IPv4 interface. This is a Windows only bug.}}<br />
<br />
===User changes===<br />
* compiler: Relaxed note element in .ecf to accept anything.<br />
* studio: Changed EIS to use note element in ecf in this style: <note><eis name="NAME1"><eis name="NAME2"></note><br />
<br />
===Developer changes===<br />
<br />
==6.4.7.7848 (March 23rd 2009)==<br />
===New features===<br />
===Improvements===<br />
*studio: Better formatting of verbatim strings, that guarantees that copy/pasting from the formatted text will yield the same string content as the one in the Eiffel source code.<br />
*base: Changed IO_MEDIUM.last_string to be attached so that existing code can easily be migrated to void-safe without changes in the pattern `read_line/last_string'.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*{{Red|runtime: Improved signal handling to use more recent APIs when available. It especially fixes issue on Solaris where a signal handler was not reinstated after a SIGSEGV signal. It fixes eweasel test#except029.}}<br />
*{{Red|runtime: Fixed a bug with exception generated during the evaluation of a once in melted mode. This fixes eweasel test#except014 and test#except030.}}<br />
*runtime: Worked around a bug in the Sun C compiler which caused the creation of SPECIAL in melted code to always fail when runtime is compiled with optimizations. It fixes eweasel test#melt070, test#melt081, test#term139, test#store014 and test#tuple006.<br />
*runtime: Fixed a potential infinite loop when exiting a crash application when while quitting a signal is received which cause our last print statement to also fail (case of SIGPIPE), then it will infinitely repeat that sequence. This fixes the issue where eweasel test#vsrp208, although it was passing, ec was still using 100% CPU.<br />
*finish_freezing: Fixed various bugs introduced at rev#77762.<br />
*{{Red|compiler: Fixed eweasel test#syntax042 and test#syntax047 as well as bug#15514 that allowed invalid characters in new C external specification. Removed generation of error when trying the old syntax, the syntax error will be based in the new syntax now. Added generation of warnings when using the old syntax and warnings are enabled.}}<br />
*{{Red|compiler: Fixed eweasel test#final077 where the arguments passed to a creation expression where not properly processed when analyzing expressions. This caused the following instruction: "<e>l_x := x.y.z (create .make (l_x))</e>" to override the value of `l_x' with the value of `x.y' which is wrong.}}<br />
*studio: Fixed a bug where EiffelStudio would not see that the class text has changed while reporting an error and thus shows the text as it was last seen by EiffelStudio at the previous error reporting.<br />
<br />
===User changes===<br />
*base: Explicitly excluded non-void safe classes from the void-safe version of EiffelBase. The list of excluded classes are:<br />
:* COMPACT_CURSOR_TREE<br />
:* LINKED_CURSOR_TREE<br />
:* TWO_WAY_CURSOR_TREE<br />
:* COMPACT_TREE_CURSOR<br />
:* LINKED_CURSOR_TREE_CURSOR<br />
:* TWO_WAY_CURSOR_TREE_CURSOR<br />
<br />
===Developer changes===<br />
*compiler: Improved parser and changed factories so that we get proper position information for strings and verbatim strings.<br />
*compiler: Improved parser benchmark tool so that one can provide the proper type of parser (obsolete, transitional, standard).<br />
<br />
==6.4.7.7762 (March 17th 2009)==<br />
===New features===<br />
*ec: Added command line version of auto test (not available with ecb)<br />
*net: Unix part of EiffelNet is now also void-safe.<br />
<br />
===Improvements===<br />
* debugger: watch tool now support object test locals in expression<br />
* compiler: Conformance checks do not take attachment status of types into account for void-unsafe code.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
* studio: Supported new attached syntax for code completion.<br />
* studio: Replaced documentation generation marks !/? with attached/detachable keywords.<br />
* compiler: Fixed potential issue which prevents error/warning source lines from being displayed.<br />
* compiler: Fixed eweasel test#agent004 and test#agent010 by ensuring the result type of the agent is properly instantiated in the agent target type context.<br />
* compiler: Fixed eweasel test#incr321 when if you finalize after removing a class from the system, then execution of workbench code fails.<br />
* debugger: Fixed bug#15494: Cannot eval detached expression (i.e VUTA error)<br />
* debugger: display object test locals declared without type (i.e: attached foo as x)<br />
* c_compiler: Updated to newer version of the MSYS DLL so that it should also work on Windows Vista 64-bit.<br />
<br />
===User changes===<br />
* studio: set the project name in status bar, when we load a configuration (i.e: even before any compilation)<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.7646 (March 9th 2009)==<br />
===New features===<br />
* compiler: supported explicitly defined "stable" attributes. Stable attribute is an attribute of a detachable type that is never assigned void. This property makes it possible to apply to it most of the CAP rules suitable for read-only entities. The stable attributes can be declared using value ''stable'' of the note tag ''option'', for example: <e><br />
a: detachable MY_TYPE note option: stable attribute end</e><br />
<br />
===Improvements===<br />
*Made the code of the Eiffel Matrix generator generates code that compiles without warnings.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*base: Fixed eweasel test#list003 where calling copy on a non-empty LINKED_LIST and providing the same list as argument would wipe out the content of the LINKED_LIST instead of preserving the elements.<br />
*base: Fixed eweasel test#list014 where calling `merge_left' and `merge_right' on a TWO_WAY_LIST was violating the invariant.<br />
*base: Fixed eweasel test#array005 where calling `wipe_out' on an ARRAY2 was violating the invariant.<br />
*install: Fixed missing distribution of `syntax_updater' tool on Unix.<br />
*dotnet: Fixed a crash while compiling a .NET system in void-safe mode when the class inherited from a .NET class.<br />
*dotnet: Fixed bug in .NET code generation where if you do not specify a version of the .NET runtime in your config file, it will always use .NET 1.0 if installed causing the .NET metadata consumer to fail since it is compiled against v2.0 of .NET.<br />
*install: Fixed a bug in the Makefile.SH needed to compile the C code of our Eiffel libraries which could cause the C compilation to fail on a multiprocessor machine.<br />
*syntax_updater: Fixed a bug when converting a class that contains an attribute with an assign clause as well as an attribute clause (See updated eweasel test#rdtp001).<br />
*{{red|store: Fixed bug#15470 introduced in 6.3 where some HASH_TABLE lookups failed because HASH_TABLE is now using `~' instead of `is_equal'. Now EiffelStore uses `same_string' to compare the keys of the HASH_TABLE}}<br />
*studio: Fixed bug#15447 where selecting the properties entry for the context menu would cause a crash.<br />
*debugger/studio: fixed bug#15232: Loop variants mess up debugger step-through<br />
*debugger: Fixed bug#15300: Objects Tab<br />
<br />
===User changes===<br />
*gobo: For the remaining of the 6.4 development, we are now using the latest version of the Gobo source code.<br />
<br />
===Developer changes===<br />
*consumer: The .NET consumer is now compiled in void-safe mode. Changed the GUID of the COM component and version, that way it is easy to switch between the old and new consumer.<br />
<br />
==6.4.7.7440 (March 2nd 2009)==<br />
===New features===<br />
*libraries: Have been updated to the new object test syntax.<br />
<br />
===Improvements===<br />
*compiler: speed up C compilation of E1/eskelet.c in workbench mode when using VS 2005 C++ in 64-bit. We went from a benchmark of 3 minutes down to 1 minute. It is definitely a bug in VS since their 32-bit version compiles the same code in just a matter of a few seconds.<br />
*compiler: Improved speed of error generation by caching certain disk access operations.<br />
*studio: Vastly improved population of the error list tool when thousands or errors/warnings are generated.<br />
*studio: Error list now shows a synchronization message (Windows only) when displaying the tool for the first time after a compilation.<br />
*studio: Errors are now shown first in the error list tool, for better visibility.<br />
*{{Red|compiler: Taken into account attachment status of formal generic constraints when checking conformance and detecting VUTA errors when target type is a formal generic.<br />
:'''Important:''' default attachment status of the constraints follows the "attached-by-default" setting, so the code might need to be updated by adding a detachable mark in front of the formal generic constraints if the actual generic parameters can be detachable types.}}<br />
*compiler: we now check that `is_equal' exists in ANY.<br />
*compiler: Fixed bug#15343 when backups where very large if you referenced many .NET assemblies even when not compiling for .NET.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*runtime: Fixed eweasel test#conform008 where creating an attached formal generic parameter of a generic type whose actual generic parameter is a TUPLE type would not create the proper TUPLE type.<br />
*debugger: fixed bug#15218: ~ not supported in the watch window.<br />
*debugger: improved/fixed expression evaluation related to `a = b' and `a ~ b'. As well conditional breakpoint of type `Has Changed'<br />
*compiler: Supported detection of VUTA(2) errors for unary and binary operators.<br />
*compiler: Fixed multiple issues with validity checks involving multi-constraint formal generics and "like Current" types.<br />
*compiler: Fixed system validity errors which were not previously detected or on the other hand rejected when it was correct. Fixes eweasel tests test#svalid019, test#svalid020 and test#multicon051.<br />
*compiler: Fixed incorrect C code generation when calling routine of a generic class under some circumstances (see eweasel test#ccomp040 and test#ccomp083, it fixes bug#15375).<br />
*compiler: Fixed bug with {SPECIAL}.put_default which did not insert the correct object for expanded generic derivations of SPECIAL. It fixes eweasel test#exec283 and test#catcall007.<br />
*compiler: Fixed improper precedence of the new object test syntax. It fixes eweasel test#syntax056 and test#attach053.<br />
*runtime: Fixed various memory corruption when manipulation large SPECIAL (i.e. whose actual size is greater than 4GB).<br />
<br />
===User changes===<br />
*general: Updated all our libraries to use the new object test syntax.<br />
*favorites: Data is now kept in project's session data; favorites are kept even after a recompilation from scratch.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.7252 (February 23rd 2009)==<br />
===New features===<br />
*compiler: Added support for the new syntax for object test, i.e. <e>attached {T} exp as u</e> instead of <e>{u: T} expr</e><br />
*syntax_updater: Syntax updater will convert the old syntax for object test to the new one, and will also perform some optimizations, such as transforming <e>{t: like x} x</e> into just <e>attached x as t</e>.<br />
<br />
===Improvements===<br />
*compiler: Supported object tests using the same object test local name in a single feature provided that their scopes do not conflict.<br />
*compiler: speed up parsing time in compiler that can provide about 3% speed up.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*runtime: Fixed bug#15280 and eweasel test#except034 that {EXCEPTION_MANAGER}.last_exception not cleared after successful retry if melted.<br />
*compiler: Correctly reported VEVI error for attributes initialized from a creation procedure by calling a once routine because the latter is not guaranteed to be executed on subsequent calls.<br />
*debugger: Fixed bug#15384: Debugger does not step at correct position (related to require else...)<br />
*debugger: now the debugger remembers correctly the breakpoint, even when recompiling from scratch.<br />
*compiler: Fixed some issues with non-conforming inheritance (bug#15224)<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.7062 (February 9th 2009)==<br />
===New features===<br />
* Eiffel2Java: void-safe, added void-safe example.<br />
* EiffelWeb: void-safe.<br />
<br />
===Improvements===<br />
*compiler: attached attribute initialization in creation procedures is now detected not only by inspecting the top-level instructions, but also the nested complex instructions with several possible execution paths, like conditional instruction, multi-branch, etc.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*testing: Fixed a bug where minimization of test was not done resulting in very large regression tests.<br />
*compiler: Fixed eweasel test#attach047 where type of array of string passed as argument to the creation procedure of the root class should have an attached actual argument type.<br />
*compiler: Fixed eweasel test#svalid018 where a crash occurred in `process_converted_expr_as' because we failed to verify that the expression still compiles fine even if inherited, because although it might compile fine in the ancestor, in the descendant it might not if they use a different set of options (e.g. non-void-safe in parent and void-safe in descendant).<br />
*eiffelweb: Fixed issue with `hexa_to_ascii' to make sure we process correctly even incorrectly encoded URL. Added `insert_pair_without_encoding' and `parse_urlencoded_input'. Fixed input_data to return an empty string and not to report an error and the content_length is empty as it is permitted to do so.<br />
*eiffelweb: Fixed issue bug#15267 by inheriting from SHARED_STDIN and SHARED_STDOUT to provide `stdin' and `output' in CGI_IN_AND_OUT.<br />
<br />
===User changes===<br />
*{{Red|base: Made several changes in EiffelBase so that the same version can be compiled in void-safe mode as well as in non-void safe mode. The code that might not be compile anymore is `create {CELL [SOME]}' because default_create is not a creation procedure anymore.}}<br />
<br />
===Developer changes===<br />
*studio: The Groups tool and Favorites tool are now based on ESF.<br />
*studio: Significant changes made in ESF tool foundations to further optimize startup and memory performance. Panels are no longer created unless the panel UI is actually needed.<br />
<br />
==6.4.7.6930 (February 2nd 2009)==<br />
===New features===<br />
*compiler: for enhanced backward compatibility with 6.3, estudio and ec/ecb have a new command line option `-compat' to launch EiffelStudio or the command line compiler with compilation settings compatible with those of 6.3. On Windows, you also have a new shortcut entry in the start menu for launching EiffelStudio in this compatibility mode.<br />
<br />
===Improvements===<br />
*compiler: Better explanation for VDPR(3) errors when two or more precursor are available by listing all the precursors.<br />
*compiler: Non-void arguments are now detected not only when they are specified in the voidness tests in immediate preconditions, but also in inherited ones.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed eweasel test#attach042 and test#attach043 where type of agent was incorrect when target was of type `like Current' or when the routine had no open arguments, in both cases the compiler generated detachable types when attached were expected.<br />
*compiler: Fixed some regressions eweasel test#fixed119 and test#incr318.<br />
*compiler: Fixed invalid precursor missed detection thus fixing eweasel test#valid117.<br />
*runtime: Fixed eweasel test#runtime011 were a memory corruption could occur when twining a SPECIAL or a TUPLE object under certain circumstances.<br />
*studio: Fixed a bug where editor will disappear when debugging.<br />
<br />
===User changes===<br />
*compiler: renamed VUPR errors to their ECMA name VDPR.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.6833 (January 26th 2009)==<br />
===New features===<br />
===Improvements===<br />
*wel: now void-safe<br />
*lex: now void-safe<br />
*encoding: now void-safe<br />
*process: now void-safe<br />
*time: added void-safe sample<br />
===Feature removed===<br />
===Bug fixes===<br />
*studio: Fixed bug#15253 where editor is missing from docking layout.<br />
*base: Fixed bug#15266 where we incorrectly merged the code value for {IO_EXCEPTION} and {RUNTIME_IO_EXCEPTION} thus breaking existing code not based on Eiffel exception object. (eweasel test#except035)<br />
*base: Fixed bug#15273 and eweasel test#except033 that an exception thrown through rescues caused infinite loop.<br />
*studio: Fixed the bug "Show disambiguated names" and "Show obsolete items" button on completion window did not function correctly and made tooltips on option buttons translatable.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.6747 (January 19th 2009)==<br />
===New features===<br />
===Improvements===<br />
*{{Red|base: Updated the IMMUTABLE_STRING classes to have an efficient string extraction query `shared_substring' which will let you create a substring of an existing immutable string without actually duplicating the data.}}<br />
*studio: Added option in the new library dialog to show only void-safe libraries, for void-safe projects.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed a bug with pre/post actions which were always executed regardless of the specified condition.<br />
*runtime: Fixed eweasel test#store020 where our recoverable store mechanism could not retrieve an object if it was generic and using a formal as actual generic parameter in a generic derivation using an expanded type. This is because in 6.2, we decided not to perform the instantiation of the attribute as it was not working properly when generic derivation is a generic expanded type. For the time being, if there is a mismatch where expected type is a FORMAL_TYPE, we try to instantiate it in the current processed type and if there is a match then we know it is ok, otherwise we reject the code. This also fixes bug#15256.<br />
*runtime: Fixed eweasel test#store019 where using the SED facilities to store/retrieve attributes which are attached would fail.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.6645 (January 12th 2009)==<br />
===New features===<br />
*studio: Added compile_all, syntax_updater and Eiffel image embedder tool to the EiffelStudio delivery. They are located under $ISE_EIFFEL/tools/spec/$ISE_PLATFORM/bin.<br />
*editor: Added `flush' to force a full load of texts.<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed bug#15235 where some C compilers do not like that we generate a C array of size 0.<br />
*compiler: Fixed correctly location reporting of error classes, using the location where the code is written which differs from the current class being analyzed.<br />
*compiler: Fixed bug#15139 by checking when parts of a multi-branch conditional instruction even when the inspect expression does not type check (see test#valid228).<br />
*compiler: Fixed test#attach039 by using written class when evaluating precursor features as the current feature may be inherited.<br />
*compiler: Fixed bug#15144 by checking that a self-initializing attribute is not processed recursively (see test#term169).<br />
*compiler: Fixed bug#15129 by using a mixed routine-attribute table for attributes that may be self-initializing (see test#final072).<br />
*studio: Fixed issue bug#15222 to respected existing note clause tags and values.<br />
*finish_freezing: Fixed typo reported in bug#15239.<br />
*net: Move definition of FD_SETSIZE before using the Windows header files so that we can really listen on 256 descriptors (breaking change introduced in the IPv6 version which is now the official).<br />
===User changes===<br />
*studio: Added EIS built-in variable "ISE_DOC_UUID" with value of "http://doc.eiffel.com/isedoc/uuid".<br />
===Developer changes===<br />
<br />
==6.4.7.6592 (January 5th 2009)==<br />
===New features===<br />
===Improvements===<br />
*studio: Automatic class licenser now preserves all other note clause terms when replacing a license in the class text.<br />
===Feature removed===<br />
===Bug fixes===<br />
*studio: Fixed reporting of feature errors to report the correct class name when referring to parent class errors.<br />
*studio: Fixed EIS tool broken by either compiler changes or improper attachment usage.<br />
*studio: Fixed a library target compiled as an application target was not editable by EIS.<br />
*studio: Fixed a bug that note elements were not properly setup when recomputing configuration, which caused missing of some EIS entries.<br />
===User changes===<br />
*{{red|net: The IPv6 version of the EiffelNet library is now the official one. The old one has been moved in the obsolete cluster.}}<br />
*{{red|compiler: The compiler now accepts <e>attribute</e> and <e>note</e> as keyword by default.}}<br />
*{{red|argument parser: The argument parser library introduces some breaking changes in deferred feature signatures due to the conversion to Void-Safe.}}<br />
*studio: Added built-in EIS variable "ISE_DOC" with value of "http://doc.eiffel.com".<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.6402 (December 27th 2008)==<br />
===New features===<br />
===Improvements===<br />
*compiler: speed up degree 6 by not looking at the content of all .e files to figure out the associated class name. We now assume on the first pass that the file name is the class name. On EiffelStudio, if none of the file were buffered, we went from about 1 minute spent to just less than 3 seconds. The improvement should be even more when classes are on a remote drive.<br />
*studio: Set current line number as initial line number of the Go to line dialog. This fixed bug#15193.<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed missing detection of VRFT errors in cases like "<e>a: TUPLE [a: TUPLE [out: INTEGER]]</e>". Fixes eweasel test#exec293.<br />
*compiler: Fixed catcall checker crashing when enabled. Fixes eweasel test#term166.<br />
*runtime: Fixed eweasel test#exec293 where accessing labels of a Void tuple would not cause a call on Void target exception.<br />
*studio: Fixed a bug that shortcut preferences with `+'/`Numpad +' could not be modified.<br />
<br />
===User changes===<br />
*compiler: now the compiler does not produce the class progress output in batch mode. If you want the old behavior, you have to use -verbose option.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.6313 (December 22nd 2008)==<br />
===New features===<br />
*base: Added `same_keys' to HASH_TABLE. You can redefine this feature to use a different comparison criterion for the keys.<br />
<br />
===Improvements===<br />
*compiler: Improved implementation of ~ and expanded comparison to use `is_equal' directly rather than using `equal'.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed eweasel test#exec292 where type of inherited formals where incorrectly interpreted in descendants.<br />
*base: Fixed a bug that would not recognize a class name A_SOMETHING as a valid identifier for INTERNAL.<br />
*studio: New library dialog now correctly sorts the contents base on the library name and not the path.<br />
*studio: Fixed bug#15173: EiffelStudio crash when selecting library<br />
*runtime: Fixed eweasel test#runtime010 where certain allocation patterns could cause a major slow down during a garbage collection cycle.<br />
<br />
===User changes===<br />
*{{Red|base: We do not use <e>is_equal</e> in EiffelBase, but instead the ~ operator. This could break some of your code, especially with HASH_TABLE.}}<br />
<br />
===Developer changes===<br />
<br />
==6.4.76164 (December 15th 2008)==<br />
===New features===<br />
* studio: In-grid-item selection in Error List tool.<br />
* editor: Customizing some editor attributes, fonts, line height and etc., per instance.<br />
<br />
===Improvements===<br />
*studio: Tabulated format of copied selection from the Error List tool.<br />
===Feature removed===<br />
===Bug fixes===<br />
*studio: Fixed bug#14237 where some manipulations on the UI could corrupt the EiffelStudio docking layout.<br />
*studio: Fixed bug#12453 where VYCQ error would print the feature name in blue rather than in green.<br />
*studio: Added a protection for bug#15116 where we could still try to access `content' while EiffelStudio has already destroyed the panel.<br />
*studio: Fixed bug#15073 that Pick and drop from output window didn't work when no class tool was available.<br />
*compiler: Fixed eweasel test#multicon050 where compiler did not handle renaming of a routine with an alias into a routine without one as it still thought the alias was available.<br />
*compiler: Added printing of referenced configuration file in which there is a conflict. This fixes bug#15099.<br />
*compiler: Fixed an incorrect VUTA(2) error being reported when compiling a static access call in void-safe mode. This fixes eweasel test#valid223.<br />
*compiler: Fixed an incrementality corruption (bug#15061 and eweasel test#incr296) which would occur a feature has an invalid signature for one failed compilation before it is fixed again.<br />
*compiler: Fixed bug#15027 where if you have a class which was originally only in an override cluster and then keep it in the override cluster but also now in a normal cluster, then we would not remove the compiled information from the override cluster which would cause in a later compilation the class to be forcibly removed from the system even though it is still in use.<br />
<br />
===User changes===<br />
*{{Red|base: it is now using the new alias syntax for operators instead of obsolete syntax based on `infix/prefix' keywords. As a result some of your code may not compile.}}<br />
===Developer changes===</div>Paulbhttps://dev.eiffel.com/index.php?title=EiffelStudio_6.4_Releases&diff=12557EiffelStudio 6.4 Releases2009-05-18T17:53:30Z<p>Paulb: /* New features */</p>
<hr />
<div>[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}<br />
<br />
= EiffelStudio 6.4.x Releases=<br />
<br />
==6.4.x==<br />
Placeholder for new stuff since last intermediate release. <br />
===New features===<br />
* studio: Completion now has a feature/class description tool tip (on by default)<br />
* Promoted the dynamic API wrapper framework to a library.<br />
<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
* studio: Fixed non-Windows bug where transition windows didn't appear due to GTK deferring GUI manipulation events.<br />
<br />
===User changes===<br />
*EiffelTime: Deferred class DATE_TIME_VALUE.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.8600 (May 10th 2009)==<br />
===New features===<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed eweasel test#term177 where having some routines using anchors to arguments from a non-generic class used in a generic class where a formal generic parameter is given as argument would cause the compiler to crash.<br />
* compiler: Fixed eweasel test#term176 and test#incr323 where if you have a syntax error at degree 5 then the compiler would misbehave after fixing the syntax error.<br />
* compiler: Fixed bug#15761 when an object test local was not set in the generated C code if the source is a creation expression (test#attach064).<br />
<br />
===User changes===<br />
* net: Renamed privately exported `make_from_fd' to `make_from_descriptor_and_address'.<br />
* compiler: Ensured that particular options specified in the library cannot be overridden in a project, because they apply to the source code (e.g., specify a variant of a syntax) rather than to the code generation (e.g., specify which assertions have to be monitored).<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.8493 (May 4th 2009)==<br />
===New features===<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*debugger: fixed bug#15557: Empty value shifts the popup window in Watch tool<br />
*debugger: fixed recently introduced bug related to expression evaluation and conditional breakpoints.<br />
*debugger: Prevented crash from "bug#15693: catcall and segfault produced" by handling erroneous cases in the debugger.<br />
*debugger: fixed bug#15708: Incorrect VUOT error being reported in debugger watch window<br />
*runtime: Fixed eweasel test#expanded008 and bug#15693 where if you had an expanded with references attributes then the garbage collector would not update the internal references of the expanded and cause some memory corruption.<br />
*install: Fixed incorrect link for compatibility mode of EiffelStudio on Windows.<br />
*install: Fixed improper COM registration of .NET consumer preventing compilation of .NET projects.<br />
*compiler: Fixed broken generation of single threaded DLL.<br />
*net: Made compilable in void-safe mode since new compiler is detecting errors that previous compiler did not catch.<br />
*build: Fixed bug#15578 in EiffelBuild which causes it to report an exception trace when it should not. This was due to a bug introduced in our preference library which also was showing hidden preferences if no default value was provided in the configuration file.<br />
<br />
===User changes===<br />
*process: File redirection in the process library will now append to a file rather than recreating it.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.8382 (April 27th 2009)==<br />
===New features===<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*debugger: fixed recently introduced bug#15610: Feature call on void target in {DBG_EXPRESSION_EVALUATOR_B}.is_boolean_expression in EiffelStudio.<br />
*debugger: fixed bug#15669 Feature call on void target in {AST_DEBUGGER_BREAKABLE_STRATEGY}.initialize_current_context<br />
*debugger: improved support for object test locals<br />
*runtime: Fixed a non-detection of stack overflow in a multithreaded application on Linux.<br />
<br />
===User changes===<br />
* compiler: Incremented ECF XML schema version to reflect the recent changes.<br />
* compiler: Replaced ECF schema attribute ''syntax_level'' of an integer type with ''syntax'' of a string type that contains one of the three possible values.<br />
* compiler: Replaced ECF schema attribute ''is_void_safe'' of a boolean type with ''void_safety'' of a string type that contains one of the three possible values (''none'' - no void safety checks, ''all'' - all void safety checks, ''initialization'' - on-demand void safety checks, i.e. only for entities that are attached).<br />
* compiler: Application options are applied after applying options specified in the library when option ''Use application options'' is set to true.<br />
* {{Red|compiler: Added compatibility for recognizing code using `infix/prefix' instead of `alias'.}}<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.8212 (April 13th 2009)==<br />
===New features===<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed bug#15570 that caused the compiler to crash or misbehave when redeclaring a feature that has object tests in both preconditions and postconditions (test#attach061).<br />
*studio: Fixed bug#15550 that object test local of a expression type wasn't formatted correctly in flat view.<br />
*studio: Fixed bug#15092: Adding pre-compilation task with empty command causes config file parse error.<br />
*studio: Fixed bug#15584: Search report does not support standard shortcuts available elsewhere.<br />
*studio: Fixed bug#15590 that "~" and "/~" were not highlighted as operators in the editor.<br />
*compiler: Fixed eweasel test#melt012 where if you have a routine with a rescue clause where an exception is raised while executing the compound of a 'when' clause the interpreter stack would get corrupted.<br />
*compiler: Fixed a bug on Windows where including some Eiffel multithreaded code in a DLL would cause a crash. This was due to the way we compiled our Thread Local Storage using a Microsoft optimization that only works for normal binaries, not DLLs.<br />
*compiler: Fixed eweasel test#melt085 and test#melt086 where using Precursor in a manifest array, manifest tuple or expression of an object test would cause a crash at runtime.<br />
*runtime: Fixed eweasel test#thread003 and test#thread007 where you could have a memory corruption at runtime when calling {THREAD}.join and no children threads have been launched yet.<br />
*runtime: Fixed test#thread008 where you could have a memory corruption at runtime when calling {MEMORY}.find_referers.<br />
*runtime: Fixed test#thread002 where early termination of parent threads could corrupt memory if children thread are still alive.<br />
*base: Fixed INTERNAL so that `set_reference_field' can be used to set a reference attribute to Void if the attribute is detachable.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.8090 (April 6th 2009)==<br />
Placeholder for new stuff since last intermediate release. <br />
===New features===<br />
* EiffelParse: void-safe, added void-safe example.<br />
<br />
===Improvements===<br />
*profiler: provides better precision of profiler result and standardized internal computation of the profiler to be independent of the platform on which profiling is done.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*debugger: better handling of object test locals in debugger (the scopes are not yet supported, and then object test with same name might cause trouble in watch tool).<br />
*runtime: Fixed eweasel test#exec310 and bug#14477 where if you have a class name that is longer than 512 bytes or an attribute name longer than 512 bytes and you call `out' it would cause a buffer overflow.<br />
*runtime: Fixed an unnoticeable performance issue with the C storable/retrieval mechanism (bug#14495).<br />
*runtime: Fixed incorrect display of NATURAL_32 attributes when calling `out' (fixes eweasel test#exec298 and bug#13862.<br />
*runtime: Fixed eweasel test#exec300 and test#store022 with the processing of deep_twin/deep_equal/store/retrieve of an expanded object.<br />
*runtime: Fixed eweasel test#exec311 where profiling with invariant checking enabled would cause a profiler failure (profile stack botched).<br />
*runtime: Fixed eweasel test#melt091 where if you somehow end up melting the code of STRING and that you have melted code that creates a manifest string it will cause the interpreter to crash.<br />
*studio: Fixed bug#15546: Can't get a flat view of a compiled class.<br />
*studio: Fixed bug#13986: Locale list becomes empty after "Restore defaults" action.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.7957 (March 29th 2009)==<br />
===New features===<br />
*{{Red|base: Implemented {EXCEPTION}.cause which returns the exception object that caused current exception in rescue execution.}}<br />
*{{Red|compiler: Added support for detecting Mac OS X and VxWorks target compilation.}}<br />
<br />
===Improvements===<br />
*encoding: Cached the conversion descriptors on Unix systems to avoid many `iconv_open' calls, which increases performance by around 25% - 300% depending on platforms.<br />
*net: Added ability to only listen on the loopback address in NETWORK_STREAM_SOCKET.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
* studio: Fixed bug#15516: Error tool reshuffles needlessly.<br />
* studio: Errors reported by one subsystem and then taken over by another now retain the previous selection in the error list tool.<br />
* studio: Fixed some crashes when trying to execute tests for which there is no .exe or trying to open documentation from EiffelStudio and Firefox cannot open the links (fixed bug#15556).<br />
* {{Red|base: Fixed the inconsistent behaviors of {EXCEPTIONS}.original* with 5.7 potentially breaking code using exceptions}}.<br />
* compiler: Fixed eweasel test#exec151 where exceptions triggered in workbench mode where you have a mix of melted and frozen code could corrupt the stack.<br />
* compiler: Fixed eweasel test#except035 by manually raising an exception if on Solaris based OS we read EOF and the file is either stdout or stderr. Other platforms remain unchanged.<br />
*{{Red|net: Fixed some issues with the EiffelNet library when trying to listen for either any address or the loopback address in both IPv4 and IPv6 mode on Windows. It also solves a security issue since if you have IPv6 enabled, then listening to the loopback would also listen to any address on the IPv4 interface. This is a Windows only bug.}}<br />
<br />
===User changes===<br />
* compiler: Relaxed note element in .ecf to accept anything.<br />
* studio: Changed EIS to use note element in ecf in this style: <note><eis name="NAME1"><eis name="NAME2"></note><br />
<br />
===Developer changes===<br />
<br />
==6.4.7.7848 (March 23rd 2009)==<br />
===New features===<br />
===Improvements===<br />
*studio: Better formatting of verbatim strings, that guarantees that copy/pasting from the formatted text will yield the same string content as the one in the Eiffel source code.<br />
*base: Changed IO_MEDIUM.last_string to be attached so that existing code can easily be migrated to void-safe without changes in the pattern `read_line/last_string'.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*{{Red|runtime: Improved signal handling to use more recent APIs when available. It especially fixes issue on Solaris where a signal handler was not reinstated after a SIGSEGV signal. It fixes eweasel test#except029.}}<br />
*{{Red|runtime: Fixed a bug with exception generated during the evaluation of a once in melted mode. This fixes eweasel test#except014 and test#except030.}}<br />
*runtime: Worked around a bug in the Sun C compiler which caused the creation of SPECIAL in melted code to always fail when runtime is compiled with optimizations. It fixes eweasel test#melt070, test#melt081, test#term139, test#store014 and test#tuple006.<br />
*runtime: Fixed a potential infinite loop when exiting a crash application when while quitting a signal is received which cause our last print statement to also fail (case of SIGPIPE), then it will infinitely repeat that sequence. This fixes the issue where eweasel test#vsrp208, although it was passing, ec was still using 100% CPU.<br />
*finish_freezing: Fixed various bugs introduced at rev#77762.<br />
*{{Red|compiler: Fixed eweasel test#syntax042 and test#syntax047 as well as bug#15514 that allowed invalid characters in new C external specification. Removed generation of error when trying the old syntax, the syntax error will be based in the new syntax now. Added generation of warnings when using the old syntax and warnings are enabled.}}<br />
*{{Red|compiler: Fixed eweasel test#final077 where the arguments passed to a creation expression where not properly processed when analyzing expressions. This caused the following instruction: "<e>l_x := x.y.z (create .make (l_x))</e>" to override the value of `l_x' with the value of `x.y' which is wrong.}}<br />
*studio: Fixed a bug where EiffelStudio would not see that the class text has changed while reporting an error and thus shows the text as it was last seen by EiffelStudio at the previous error reporting.<br />
<br />
===User changes===<br />
*base: Explicitly excluded non-void safe classes from the void-safe version of EiffelBase. The list of excluded classes are:<br />
:* COMPACT_CURSOR_TREE<br />
:* LINKED_CURSOR_TREE<br />
:* TWO_WAY_CURSOR_TREE<br />
:* COMPACT_TREE_CURSOR<br />
:* LINKED_CURSOR_TREE_CURSOR<br />
:* TWO_WAY_CURSOR_TREE_CURSOR<br />
<br />
===Developer changes===<br />
*compiler: Improved parser and changed factories so that we get proper position information for strings and verbatim strings.<br />
*compiler: Improved parser benchmark tool so that one can provide the proper type of parser (obsolete, transitional, standard).<br />
<br />
==6.4.7.7762 (March 17th 2009)==<br />
===New features===<br />
*ec: Added command line version of auto test (not available with ecb)<br />
*net: Unix part of EiffelNet is now also void-safe.<br />
<br />
===Improvements===<br />
* debugger: watch tool now support object test locals in expression<br />
* compiler: Conformance checks do not take attachment status of types into account for void-unsafe code.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
* studio: Supported new attached syntax for code completion.<br />
* studio: Replaced documentation generation marks !/? with attached/detachable keywords.<br />
* compiler: Fixed potential issue which prevents error/warning source lines from being displayed.<br />
* compiler: Fixed eweasel test#agent004 and test#agent010 by ensuring the result type of the agent is properly instantiated in the agent target type context.<br />
* compiler: Fixed eweasel test#incr321 when if you finalize after removing a class from the system, then execution of workbench code fails.<br />
* debugger: Fixed bug#15494: Cannot eval detached expression (i.e VUTA error)<br />
* debugger: display object test locals declared without type (i.e: attached foo as x)<br />
* c_compiler: Updated to newer version of the MSYS DLL so that it should also work on Windows Vista 64-bit.<br />
<br />
===User changes===<br />
* studio: set the project name in status bar, when we load a configuration (i.e: even before any compilation)<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.7646 (March 9th 2009)==<br />
===New features===<br />
* compiler: supported explicitly defined "stable" attributes. Stable attribute is an attribute of a detachable type that is never assigned void. This property makes it possible to apply to it most of the CAP rules suitable for read-only entities. The stable attributes can be declared using value ''stable'' of the note tag ''option'', for example: <e><br />
a: detachable MY_TYPE note option: stable attribute end</e><br />
<br />
===Improvements===<br />
*Made the code of the Eiffel Matrix generator generates code that compiles without warnings.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*base: Fixed eweasel test#list003 where calling copy on a non-empty LINKED_LIST and providing the same list as argument would wipe out the content of the LINKED_LIST instead of preserving the elements.<br />
*base: Fixed eweasel test#list014 where calling `merge_left' and `merge_right' on a TWO_WAY_LIST was violating the invariant.<br />
*base: Fixed eweasel test#array005 where calling `wipe_out' on an ARRAY2 was violating the invariant.<br />
*install: Fixed missing distribution of `syntax_updater' tool on Unix.<br />
*dotnet: Fixed a crash while compiling a .NET system in void-safe mode when the class inherited from a .NET class.<br />
*dotnet: Fixed bug in .NET code generation where if you do not specify a version of the .NET runtime in your config file, it will always use .NET 1.0 if installed causing the .NET metadata consumer to fail since it is compiled against v2.0 of .NET.<br />
*install: Fixed a bug in the Makefile.SH needed to compile the C code of our Eiffel libraries which could cause the C compilation to fail on a multiprocessor machine.<br />
*syntax_updater: Fixed a bug when converting a class that contains an attribute with an assign clause as well as an attribute clause (See updated eweasel test#rdtp001).<br />
*{{red|store: Fixed bug#15470 introduced in 6.3 where some HASH_TABLE lookups failed because HASH_TABLE is now using `~' instead of `is_equal'. Now EiffelStore uses `same_string' to compare the keys of the HASH_TABLE}}<br />
*studio: Fixed bug#15447 where selecting the properties entry for the context menu would cause a crash.<br />
*debugger/studio: fixed bug#15232: Loop variants mess up debugger step-through<br />
*debugger: Fixed bug#15300: Objects Tab<br />
<br />
===User changes===<br />
*gobo: For the remaining of the 6.4 development, we are now using the latest version of the Gobo source code.<br />
<br />
===Developer changes===<br />
*consumer: The .NET consumer is now compiled in void-safe mode. Changed the GUID of the COM component and version, that way it is easy to switch between the old and new consumer.<br />
<br />
==6.4.7.7440 (March 2nd 2009)==<br />
===New features===<br />
*libraries: Have been updated to the new object test syntax.<br />
<br />
===Improvements===<br />
*compiler: speed up C compilation of E1/eskelet.c in workbench mode when using VS 2005 C++ in 64-bit. We went from a benchmark of 3 minutes down to 1 minute. It is definitely a bug in VS since their 32-bit version compiles the same code in just a matter of a few seconds.<br />
*compiler: Improved speed of error generation by caching certain disk access operations.<br />
*studio: Vastly improved population of the error list tool when thousands or errors/warnings are generated.<br />
*studio: Error list now shows a synchronization message (Windows only) when displaying the tool for the first time after a compilation.<br />
*studio: Errors are now shown first in the error list tool, for better visibility.<br />
*{{Red|compiler: Taken into account attachment status of formal generic constraints when checking conformance and detecting VUTA errors when target type is a formal generic.<br />
:'''Important:''' default attachment status of the constraints follows the "attached-by-default" setting, so the code might need to be updated by adding a detachable mark in front of the formal generic constraints if the actual generic parameters can be detachable types.}}<br />
*compiler: we now check that `is_equal' exists in ANY.<br />
*compiler: Fixed bug#15343 when backups where very large if you referenced many .NET assemblies even when not compiling for .NET.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*runtime: Fixed eweasel test#conform008 where creating an attached formal generic parameter of a generic type whose actual generic parameter is a TUPLE type would not create the proper TUPLE type.<br />
*debugger: fixed bug#15218: ~ not supported in the watch window.<br />
*debugger: improved/fixed expression evaluation related to `a = b' and `a ~ b'. As well conditional breakpoint of type `Has Changed'<br />
*compiler: Supported detection of VUTA(2) errors for unary and binary operators.<br />
*compiler: Fixed multiple issues with validity checks involving multi-constraint formal generics and "like Current" types.<br />
*compiler: Fixed system validity errors which were not previously detected or on the other hand rejected when it was correct. Fixes eweasel tests test#svalid019, test#svalid020 and test#multicon051.<br />
*compiler: Fixed incorrect C code generation when calling routine of a generic class under some circumstances (see eweasel test#ccomp040 and test#ccomp083, it fixes bug#15375).<br />
*compiler: Fixed bug with {SPECIAL}.put_default which did not insert the correct object for expanded generic derivations of SPECIAL. It fixes eweasel test#exec283 and test#catcall007.<br />
*compiler: Fixed improper precedence of the new object test syntax. It fixes eweasel test#syntax056 and test#attach053.<br />
*runtime: Fixed various memory corruption when manipulation large SPECIAL (i.e. whose actual size is greater than 4GB).<br />
<br />
===User changes===<br />
*general: Updated all our libraries to use the new object test syntax.<br />
*favorites: Data is now kept in project's session data; favorites are kept even after a recompilation from scratch.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.7252 (February 23rd 2009)==<br />
===New features===<br />
*compiler: Added support for the new syntax for object test, i.e. <e>attached {T} exp as u</e> instead of <e>{u: T} expr</e><br />
*syntax_updater: Syntax updater will convert the old syntax for object test to the new one, and will also perform some optimizations, such as transforming <e>{t: like x} x</e> into just <e>attached x as t</e>.<br />
<br />
===Improvements===<br />
*compiler: Supported object tests using the same object test local name in a single feature provided that their scopes do not conflict.<br />
*compiler: speed up parsing time in compiler that can provide about 3% speed up.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*runtime: Fixed bug#15280 and eweasel test#except034 that {EXCEPTION_MANAGER}.last_exception not cleared after successful retry if melted.<br />
*compiler: Correctly reported VEVI error for attributes initialized from a creation procedure by calling a once routine because the latter is not guaranteed to be executed on subsequent calls.<br />
*debugger: Fixed bug#15384: Debugger does not step at correct position (related to require else...)<br />
*debugger: now the debugger remembers correctly the breakpoint, even when recompiling from scratch.<br />
*compiler: Fixed some issues with non-conforming inheritance (bug#15224)<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.7062 (February 9th 2009)==<br />
===New features===<br />
* Eiffel2Java: void-safe, added void-safe example.<br />
* EiffelWeb: void-safe.<br />
<br />
===Improvements===<br />
*compiler: attached attribute initialization in creation procedures is now detected not only by inspecting the top-level instructions, but also the nested complex instructions with several possible execution paths, like conditional instruction, multi-branch, etc.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*testing: Fixed a bug where minimization of test was not done resulting in very large regression tests.<br />
*compiler: Fixed eweasel test#attach047 where type of array of string passed as argument to the creation procedure of the root class should have an attached actual argument type.<br />
*compiler: Fixed eweasel test#svalid018 where a crash occurred in `process_converted_expr_as' because we failed to verify that the expression still compiles fine even if inherited, because although it might compile fine in the ancestor, in the descendant it might not if they use a different set of options (e.g. non-void-safe in parent and void-safe in descendant).<br />
*eiffelweb: Fixed issue with `hexa_to_ascii' to make sure we process correctly even incorrectly encoded URL. Added `insert_pair_without_encoding' and `parse_urlencoded_input'. Fixed input_data to return an empty string and not to report an error and the content_length is empty as it is permitted to do so.<br />
*eiffelweb: Fixed issue bug#15267 by inheriting from SHARED_STDIN and SHARED_STDOUT to provide `stdin' and `output' in CGI_IN_AND_OUT.<br />
<br />
===User changes===<br />
*{{Red|base: Made several changes in EiffelBase so that the same version can be compiled in void-safe mode as well as in non-void safe mode. The code that might not be compile anymore is `create {CELL [SOME]}' because default_create is not a creation procedure anymore.}}<br />
<br />
===Developer changes===<br />
*studio: The Groups tool and Favorites tool are now based on ESF.<br />
*studio: Significant changes made in ESF tool foundations to further optimize startup and memory performance. Panels are no longer created unless the panel UI is actually needed.<br />
<br />
==6.4.7.6930 (February 2nd 2009)==<br />
===New features===<br />
*compiler: for enhanced backward compatibility with 6.3, estudio and ec/ecb have a new command line option `-compat' to launch EiffelStudio or the command line compiler with compilation settings compatible with those of 6.3. On Windows, you also have a new shortcut entry in the start menu for launching EiffelStudio in this compatibility mode.<br />
<br />
===Improvements===<br />
*compiler: Better explanation for VDPR(3) errors when two or more precursor are available by listing all the precursors.<br />
*compiler: Non-void arguments are now detected not only when they are specified in the voidness tests in immediate preconditions, but also in inherited ones.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed eweasel test#attach042 and test#attach043 where type of agent was incorrect when target was of type `like Current' or when the routine had no open arguments, in both cases the compiler generated detachable types when attached were expected.<br />
*compiler: Fixed some regressions eweasel test#fixed119 and test#incr318.<br />
*compiler: Fixed invalid precursor missed detection thus fixing eweasel test#valid117.<br />
*runtime: Fixed eweasel test#runtime011 were a memory corruption could occur when twining a SPECIAL or a TUPLE object under certain circumstances.<br />
*studio: Fixed a bug where editor will disappear when debugging.<br />
<br />
===User changes===<br />
*compiler: renamed VUPR errors to their ECMA name VDPR.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.6833 (January 26th 2009)==<br />
===New features===<br />
===Improvements===<br />
*wel: now void-safe<br />
*lex: now void-safe<br />
*encoding: now void-safe<br />
*process: now void-safe<br />
*time: added void-safe sample<br />
===Feature removed===<br />
===Bug fixes===<br />
*studio: Fixed bug#15253 where editor is missing from docking layout.<br />
*base: Fixed bug#15266 where we incorrectly merged the code value for {IO_EXCEPTION} and {RUNTIME_IO_EXCEPTION} thus breaking existing code not based on Eiffel exception object. (eweasel test#except035)<br />
*base: Fixed bug#15273 and eweasel test#except033 that an exception thrown through rescues caused infinite loop.<br />
*studio: Fixed the bug "Show disambiguated names" and "Show obsolete items" button on completion window did not function correctly and made tooltips on option buttons translatable.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.6747 (January 19th 2009)==<br />
===New features===<br />
===Improvements===<br />
*{{Red|base: Updated the IMMUTABLE_STRING classes to have an efficient string extraction query `shared_substring' which will let you create a substring of an existing immutable string without actually duplicating the data.}}<br />
*studio: Added option in the new library dialog to show only void-safe libraries, for void-safe projects.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed a bug with pre/post actions which were always executed regardless of the specified condition.<br />
*runtime: Fixed eweasel test#store020 where our recoverable store mechanism could not retrieve an object if it was generic and using a formal as actual generic parameter in a generic derivation using an expanded type. This is because in 6.2, we decided not to perform the instantiation of the attribute as it was not working properly when generic derivation is a generic expanded type. For the time being, if there is a mismatch where expected type is a FORMAL_TYPE, we try to instantiate it in the current processed type and if there is a match then we know it is ok, otherwise we reject the code. This also fixes bug#15256.<br />
*runtime: Fixed eweasel test#store019 where using the SED facilities to store/retrieve attributes which are attached would fail.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.6645 (January 12th 2009)==<br />
===New features===<br />
*studio: Added compile_all, syntax_updater and Eiffel image embedder tool to the EiffelStudio delivery. They are located under $ISE_EIFFEL/tools/spec/$ISE_PLATFORM/bin.<br />
*editor: Added `flush' to force a full load of texts.<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed bug#15235 where some C compilers do not like that we generate a C array of size 0.<br />
*compiler: Fixed correctly location reporting of error classes, using the location where the code is written which differs from the current class being analyzed.<br />
*compiler: Fixed bug#15139 by checking when parts of a multi-branch conditional instruction even when the inspect expression does not type check (see test#valid228).<br />
*compiler: Fixed test#attach039 by using written class when evaluating precursor features as the current feature may be inherited.<br />
*compiler: Fixed bug#15144 by checking that a self-initializing attribute is not processed recursively (see test#term169).<br />
*compiler: Fixed bug#15129 by using a mixed routine-attribute table for attributes that may be self-initializing (see test#final072).<br />
*studio: Fixed issue bug#15222 to respected existing note clause tags and values.<br />
*finish_freezing: Fixed typo reported in bug#15239.<br />
*net: Move definition of FD_SETSIZE before using the Windows header files so that we can really listen on 256 descriptors (breaking change introduced in the IPv6 version which is now the official).<br />
===User changes===<br />
*studio: Added EIS built-in variable "ISE_DOC_UUID" with value of "http://doc.eiffel.com/isedoc/uuid".<br />
===Developer changes===<br />
<br />
==6.4.7.6592 (January 5th 2009)==<br />
===New features===<br />
===Improvements===<br />
*studio: Automatic class licenser now preserves all other note clause terms when replacing a license in the class text.<br />
===Feature removed===<br />
===Bug fixes===<br />
*studio: Fixed reporting of feature errors to report the correct class name when referring to parent class errors.<br />
*studio: Fixed EIS tool broken by either compiler changes or improper attachment usage.<br />
*studio: Fixed a library target compiled as an application target was not editable by EIS.<br />
*studio: Fixed a bug that note elements were not properly setup when recomputing configuration, which caused missing of some EIS entries.<br />
===User changes===<br />
*{{red|net: The IPv6 version of the EiffelNet library is now the official one. The old one has been moved in the obsolete cluster.}}<br />
*{{red|compiler: The compiler now accepts <e>attribute</e> and <e>note</e> as keyword by default.}}<br />
*{{red|argument parser: The argument parser library introduces some breaking changes in deferred feature signatures due to the conversion to Void-Safe.}}<br />
*studio: Added built-in EIS variable "ISE_DOC" with value of "http://doc.eiffel.com".<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.6402 (December 27th 2008)==<br />
===New features===<br />
===Improvements===<br />
*compiler: speed up degree 6 by not looking at the content of all .e files to figure out the associated class name. We now assume on the first pass that the file name is the class name. On EiffelStudio, if none of the file were buffered, we went from about 1 minute spent to just less than 3 seconds. The improvement should be even more when classes are on a remote drive.<br />
*studio: Set current line number as initial line number of the Go to line dialog. This fixed bug#15193.<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed missing detection of VRFT errors in cases like "<e>a: TUPLE [a: TUPLE [out: INTEGER]]</e>". Fixes eweasel test#exec293.<br />
*compiler: Fixed catcall checker crashing when enabled. Fixes eweasel test#term166.<br />
*runtime: Fixed eweasel test#exec293 where accessing labels of a Void tuple would not cause a call on Void target exception.<br />
*studio: Fixed a bug that shortcut preferences with `+'/`Numpad +' could not be modified.<br />
<br />
===User changes===<br />
*compiler: now the compiler does not produce the class progress output in batch mode. If you want the old behavior, you have to use -verbose option.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.6313 (December 22nd 2008)==<br />
===New features===<br />
*base: Added `same_keys' to HASH_TABLE. You can redefine this feature to use a different comparison criterion for the keys.<br />
<br />
===Improvements===<br />
*compiler: Improved implementation of ~ and expanded comparison to use `is_equal' directly rather than using `equal'.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed eweasel test#exec292 where type of inherited formals where incorrectly interpreted in descendants.<br />
*base: Fixed a bug that would not recognize a class name A_SOMETHING as a valid identifier for INTERNAL.<br />
*studio: New library dialog now correctly sorts the contents base on the library name and not the path.<br />
*studio: Fixed bug#15173: EiffelStudio crash when selecting library<br />
*runtime: Fixed eweasel test#runtime010 where certain allocation patterns could cause a major slow down during a garbage collection cycle.<br />
<br />
===User changes===<br />
*{{Red|base: We do not use <e>is_equal</e> in EiffelBase, but instead the ~ operator. This could break some of your code, especially with HASH_TABLE.}}<br />
<br />
===Developer changes===<br />
<br />
==6.4.76164 (December 15th 2008)==<br />
===New features===<br />
* studio: In-grid-item selection in Error List tool.<br />
* editor: Customizing some editor attributes, fonts, line height and etc., per instance.<br />
<br />
===Improvements===<br />
*studio: Tabulated format of copied selection from the Error List tool.<br />
===Feature removed===<br />
===Bug fixes===<br />
*studio: Fixed bug#14237 where some manipulations on the UI could corrupt the EiffelStudio docking layout.<br />
*studio: Fixed bug#12453 where VYCQ error would print the feature name in blue rather than in green.<br />
*studio: Added a protection for bug#15116 where we could still try to access `content' while EiffelStudio has already destroyed the panel.<br />
*studio: Fixed bug#15073 that Pick and drop from output window didn't work when no class tool was available.<br />
*compiler: Fixed eweasel test#multicon050 where compiler did not handle renaming of a routine with an alias into a routine without one as it still thought the alias was available.<br />
*compiler: Added printing of referenced configuration file in which there is a conflict. This fixes bug#15099.<br />
*compiler: Fixed an incorrect VUTA(2) error being reported when compiling a static access call in void-safe mode. This fixes eweasel test#valid223.<br />
*compiler: Fixed an incrementality corruption (bug#15061 and eweasel test#incr296) which would occur a feature has an invalid signature for one failed compilation before it is fixed again.<br />
*compiler: Fixed bug#15027 where if you have a class which was originally only in an override cluster and then keep it in the override cluster but also now in a normal cluster, then we would not remove the compiled information from the override cluster which would cause in a later compilation the class to be forcibly removed from the system even though it is still in use.<br />
<br />
===User changes===<br />
*{{Red|base: it is now using the new alias syntax for operators instead of obsolete syntax based on `infix/prefix' keywords. As a result some of your code may not compile.}}<br />
===Developer changes===</div>Paulbhttps://dev.eiffel.com/index.php?title=EiffelStudio_6.4_Releases&diff=12556EiffelStudio 6.4 Releases2009-05-18T17:52:37Z<p>Paulb: /* Bug fixes */</p>
<hr />
<div>[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}<br />
<br />
= EiffelStudio 6.4.x Releases=<br />
<br />
==6.4.x==<br />
Placeholder for new stuff since last intermediate release. <br />
===New features===<br />
* Completion now has a feature/class description tool tip (on by default)<br />
<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
* studio: Fixed non-Windows bug where transition windows didn't appear due to GTK deferring GUI manipulation events.<br />
<br />
===User changes===<br />
*EiffelTime: Deferred class DATE_TIME_VALUE.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.8600 (May 10th 2009)==<br />
===New features===<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed eweasel test#term177 where having some routines using anchors to arguments from a non-generic class used in a generic class where a formal generic parameter is given as argument would cause the compiler to crash.<br />
* compiler: Fixed eweasel test#term176 and test#incr323 where if you have a syntax error at degree 5 then the compiler would misbehave after fixing the syntax error.<br />
* compiler: Fixed bug#15761 when an object test local was not set in the generated C code if the source is a creation expression (test#attach064).<br />
<br />
===User changes===<br />
* net: Renamed privately exported `make_from_fd' to `make_from_descriptor_and_address'.<br />
* compiler: Ensured that particular options specified in the library cannot be overridden in a project, because they apply to the source code (e.g., specify a variant of a syntax) rather than to the code generation (e.g., specify which assertions have to be monitored).<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.8493 (May 4th 2009)==<br />
===New features===<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*debugger: fixed bug#15557: Empty value shifts the popup window in Watch tool<br />
*debugger: fixed recently introduced bug related to expression evaluation and conditional breakpoints.<br />
*debugger: Prevented crash from "bug#15693: catcall and segfault produced" by handling erroneous cases in the debugger.<br />
*debugger: fixed bug#15708: Incorrect VUOT error being reported in debugger watch window<br />
*runtime: Fixed eweasel test#expanded008 and bug#15693 where if you had an expanded with references attributes then the garbage collector would not update the internal references of the expanded and cause some memory corruption.<br />
*install: Fixed incorrect link for compatibility mode of EiffelStudio on Windows.<br />
*install: Fixed improper COM registration of .NET consumer preventing compilation of .NET projects.<br />
*compiler: Fixed broken generation of single threaded DLL.<br />
*net: Made compilable in void-safe mode since new compiler is detecting errors that previous compiler did not catch.<br />
*build: Fixed bug#15578 in EiffelBuild which causes it to report an exception trace when it should not. This was due to a bug introduced in our preference library which also was showing hidden preferences if no default value was provided in the configuration file.<br />
<br />
===User changes===<br />
*process: File redirection in the process library will now append to a file rather than recreating it.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.8382 (April 27th 2009)==<br />
===New features===<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*debugger: fixed recently introduced bug#15610: Feature call on void target in {DBG_EXPRESSION_EVALUATOR_B}.is_boolean_expression in EiffelStudio.<br />
*debugger: fixed bug#15669 Feature call on void target in {AST_DEBUGGER_BREAKABLE_STRATEGY}.initialize_current_context<br />
*debugger: improved support for object test locals<br />
*runtime: Fixed a non-detection of stack overflow in a multithreaded application on Linux.<br />
<br />
===User changes===<br />
* compiler: Incremented ECF XML schema version to reflect the recent changes.<br />
* compiler: Replaced ECF schema attribute ''syntax_level'' of an integer type with ''syntax'' of a string type that contains one of the three possible values.<br />
* compiler: Replaced ECF schema attribute ''is_void_safe'' of a boolean type with ''void_safety'' of a string type that contains one of the three possible values (''none'' - no void safety checks, ''all'' - all void safety checks, ''initialization'' - on-demand void safety checks, i.e. only for entities that are attached).<br />
* compiler: Application options are applied after applying options specified in the library when option ''Use application options'' is set to true.<br />
* {{Red|compiler: Added compatibility for recognizing code using `infix/prefix' instead of `alias'.}}<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.8212 (April 13th 2009)==<br />
===New features===<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed bug#15570 that caused the compiler to crash or misbehave when redeclaring a feature that has object tests in both preconditions and postconditions (test#attach061).<br />
*studio: Fixed bug#15550 that object test local of a expression type wasn't formatted correctly in flat view.<br />
*studio: Fixed bug#15092: Adding pre-compilation task with empty command causes config file parse error.<br />
*studio: Fixed bug#15584: Search report does not support standard shortcuts available elsewhere.<br />
*studio: Fixed bug#15590 that "~" and "/~" were not highlighted as operators in the editor.<br />
*compiler: Fixed eweasel test#melt012 where if you have a routine with a rescue clause where an exception is raised while executing the compound of a 'when' clause the interpreter stack would get corrupted.<br />
*compiler: Fixed a bug on Windows where including some Eiffel multithreaded code in a DLL would cause a crash. This was due to the way we compiled our Thread Local Storage using a Microsoft optimization that only works for normal binaries, not DLLs.<br />
*compiler: Fixed eweasel test#melt085 and test#melt086 where using Precursor in a manifest array, manifest tuple or expression of an object test would cause a crash at runtime.<br />
*runtime: Fixed eweasel test#thread003 and test#thread007 where you could have a memory corruption at runtime when calling {THREAD}.join and no children threads have been launched yet.<br />
*runtime: Fixed test#thread008 where you could have a memory corruption at runtime when calling {MEMORY}.find_referers.<br />
*runtime: Fixed test#thread002 where early termination of parent threads could corrupt memory if children thread are still alive.<br />
*base: Fixed INTERNAL so that `set_reference_field' can be used to set a reference attribute to Void if the attribute is detachable.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.8090 (April 6th 2009)==<br />
Placeholder for new stuff since last intermediate release. <br />
===New features===<br />
* EiffelParse: void-safe, added void-safe example.<br />
<br />
===Improvements===<br />
*profiler: provides better precision of profiler result and standardized internal computation of the profiler to be independent of the platform on which profiling is done.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*debugger: better handling of object test locals in debugger (the scopes are not yet supported, and then object test with same name might cause trouble in watch tool).<br />
*runtime: Fixed eweasel test#exec310 and bug#14477 where if you have a class name that is longer than 512 bytes or an attribute name longer than 512 bytes and you call `out' it would cause a buffer overflow.<br />
*runtime: Fixed an unnoticeable performance issue with the C storable/retrieval mechanism (bug#14495).<br />
*runtime: Fixed incorrect display of NATURAL_32 attributes when calling `out' (fixes eweasel test#exec298 and bug#13862.<br />
*runtime: Fixed eweasel test#exec300 and test#store022 with the processing of deep_twin/deep_equal/store/retrieve of an expanded object.<br />
*runtime: Fixed eweasel test#exec311 where profiling with invariant checking enabled would cause a profiler failure (profile stack botched).<br />
*runtime: Fixed eweasel test#melt091 where if you somehow end up melting the code of STRING and that you have melted code that creates a manifest string it will cause the interpreter to crash.<br />
*studio: Fixed bug#15546: Can't get a flat view of a compiled class.<br />
*studio: Fixed bug#13986: Locale list becomes empty after "Restore defaults" action.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.7957 (March 29th 2009)==<br />
===New features===<br />
*{{Red|base: Implemented {EXCEPTION}.cause which returns the exception object that caused current exception in rescue execution.}}<br />
*{{Red|compiler: Added support for detecting Mac OS X and VxWorks target compilation.}}<br />
<br />
===Improvements===<br />
*encoding: Cached the conversion descriptors on Unix systems to avoid many `iconv_open' calls, which increases performance by around 25% - 300% depending on platforms.<br />
*net: Added ability to only listen on the loopback address in NETWORK_STREAM_SOCKET.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
* studio: Fixed bug#15516: Error tool reshuffles needlessly.<br />
* studio: Errors reported by one subsystem and then taken over by another now retain the previous selection in the error list tool.<br />
* studio: Fixed some crashes when trying to execute tests for which there is no .exe or trying to open documentation from EiffelStudio and Firefox cannot open the links (fixed bug#15556).<br />
* {{Red|base: Fixed the inconsistent behaviors of {EXCEPTIONS}.original* with 5.7 potentially breaking code using exceptions}}.<br />
* compiler: Fixed eweasel test#exec151 where exceptions triggered in workbench mode where you have a mix of melted and frozen code could corrupt the stack.<br />
* compiler: Fixed eweasel test#except035 by manually raising an exception if on Solaris based OS we read EOF and the file is either stdout or stderr. Other platforms remain unchanged.<br />
*{{Red|net: Fixed some issues with the EiffelNet library when trying to listen for either any address or the loopback address in both IPv4 and IPv6 mode on Windows. It also solves a security issue since if you have IPv6 enabled, then listening to the loopback would also listen to any address on the IPv4 interface. This is a Windows only bug.}}<br />
<br />
===User changes===<br />
* compiler: Relaxed note element in .ecf to accept anything.<br />
* studio: Changed EIS to use note element in ecf in this style: <note><eis name="NAME1"><eis name="NAME2"></note><br />
<br />
===Developer changes===<br />
<br />
==6.4.7.7848 (March 23rd 2009)==<br />
===New features===<br />
===Improvements===<br />
*studio: Better formatting of verbatim strings, that guarantees that copy/pasting from the formatted text will yield the same string content as the one in the Eiffel source code.<br />
*base: Changed IO_MEDIUM.last_string to be attached so that existing code can easily be migrated to void-safe without changes in the pattern `read_line/last_string'.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*{{Red|runtime: Improved signal handling to use more recent APIs when available. It especially fixes issue on Solaris where a signal handler was not reinstated after a SIGSEGV signal. It fixes eweasel test#except029.}}<br />
*{{Red|runtime: Fixed a bug with exception generated during the evaluation of a once in melted mode. This fixes eweasel test#except014 and test#except030.}}<br />
*runtime: Worked around a bug in the Sun C compiler which caused the creation of SPECIAL in melted code to always fail when runtime is compiled with optimizations. It fixes eweasel test#melt070, test#melt081, test#term139, test#store014 and test#tuple006.<br />
*runtime: Fixed a potential infinite loop when exiting a crash application when while quitting a signal is received which cause our last print statement to also fail (case of SIGPIPE), then it will infinitely repeat that sequence. This fixes the issue where eweasel test#vsrp208, although it was passing, ec was still using 100% CPU.<br />
*finish_freezing: Fixed various bugs introduced at rev#77762.<br />
*{{Red|compiler: Fixed eweasel test#syntax042 and test#syntax047 as well as bug#15514 that allowed invalid characters in new C external specification. Removed generation of error when trying the old syntax, the syntax error will be based in the new syntax now. Added generation of warnings when using the old syntax and warnings are enabled.}}<br />
*{{Red|compiler: Fixed eweasel test#final077 where the arguments passed to a creation expression where not properly processed when analyzing expressions. This caused the following instruction: "<e>l_x := x.y.z (create .make (l_x))</e>" to override the value of `l_x' with the value of `x.y' which is wrong.}}<br />
*studio: Fixed a bug where EiffelStudio would not see that the class text has changed while reporting an error and thus shows the text as it was last seen by EiffelStudio at the previous error reporting.<br />
<br />
===User changes===<br />
*base: Explicitly excluded non-void safe classes from the void-safe version of EiffelBase. The list of excluded classes are:<br />
:* COMPACT_CURSOR_TREE<br />
:* LINKED_CURSOR_TREE<br />
:* TWO_WAY_CURSOR_TREE<br />
:* COMPACT_TREE_CURSOR<br />
:* LINKED_CURSOR_TREE_CURSOR<br />
:* TWO_WAY_CURSOR_TREE_CURSOR<br />
<br />
===Developer changes===<br />
*compiler: Improved parser and changed factories so that we get proper position information for strings and verbatim strings.<br />
*compiler: Improved parser benchmark tool so that one can provide the proper type of parser (obsolete, transitional, standard).<br />
<br />
==6.4.7.7762 (March 17th 2009)==<br />
===New features===<br />
*ec: Added command line version of auto test (not available with ecb)<br />
*net: Unix part of EiffelNet is now also void-safe.<br />
<br />
===Improvements===<br />
* debugger: watch tool now support object test locals in expression<br />
* compiler: Conformance checks do not take attachment status of types into account for void-unsafe code.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
* studio: Supported new attached syntax for code completion.<br />
* studio: Replaced documentation generation marks !/? with attached/detachable keywords.<br />
* compiler: Fixed potential issue which prevents error/warning source lines from being displayed.<br />
* compiler: Fixed eweasel test#agent004 and test#agent010 by ensuring the result type of the agent is properly instantiated in the agent target type context.<br />
* compiler: Fixed eweasel test#incr321 when if you finalize after removing a class from the system, then execution of workbench code fails.<br />
* debugger: Fixed bug#15494: Cannot eval detached expression (i.e VUTA error)<br />
* debugger: display object test locals declared without type (i.e: attached foo as x)<br />
* c_compiler: Updated to newer version of the MSYS DLL so that it should also work on Windows Vista 64-bit.<br />
<br />
===User changes===<br />
* studio: set the project name in status bar, when we load a configuration (i.e: even before any compilation)<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.7646 (March 9th 2009)==<br />
===New features===<br />
* compiler: supported explicitly defined "stable" attributes. Stable attribute is an attribute of a detachable type that is never assigned void. This property makes it possible to apply to it most of the CAP rules suitable for read-only entities. The stable attributes can be declared using value ''stable'' of the note tag ''option'', for example: <e><br />
a: detachable MY_TYPE note option: stable attribute end</e><br />
<br />
===Improvements===<br />
*Made the code of the Eiffel Matrix generator generates code that compiles without warnings.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*base: Fixed eweasel test#list003 where calling copy on a non-empty LINKED_LIST and providing the same list as argument would wipe out the content of the LINKED_LIST instead of preserving the elements.<br />
*base: Fixed eweasel test#list014 where calling `merge_left' and `merge_right' on a TWO_WAY_LIST was violating the invariant.<br />
*base: Fixed eweasel test#array005 where calling `wipe_out' on an ARRAY2 was violating the invariant.<br />
*install: Fixed missing distribution of `syntax_updater' tool on Unix.<br />
*dotnet: Fixed a crash while compiling a .NET system in void-safe mode when the class inherited from a .NET class.<br />
*dotnet: Fixed bug in .NET code generation where if you do not specify a version of the .NET runtime in your config file, it will always use .NET 1.0 if installed causing the .NET metadata consumer to fail since it is compiled against v2.0 of .NET.<br />
*install: Fixed a bug in the Makefile.SH needed to compile the C code of our Eiffel libraries which could cause the C compilation to fail on a multiprocessor machine.<br />
*syntax_updater: Fixed a bug when converting a class that contains an attribute with an assign clause as well as an attribute clause (See updated eweasel test#rdtp001).<br />
*{{red|store: Fixed bug#15470 introduced in 6.3 where some HASH_TABLE lookups failed because HASH_TABLE is now using `~' instead of `is_equal'. Now EiffelStore uses `same_string' to compare the keys of the HASH_TABLE}}<br />
*studio: Fixed bug#15447 where selecting the properties entry for the context menu would cause a crash.<br />
*debugger/studio: fixed bug#15232: Loop variants mess up debugger step-through<br />
*debugger: Fixed bug#15300: Objects Tab<br />
<br />
===User changes===<br />
*gobo: For the remaining of the 6.4 development, we are now using the latest version of the Gobo source code.<br />
<br />
===Developer changes===<br />
*consumer: The .NET consumer is now compiled in void-safe mode. Changed the GUID of the COM component and version, that way it is easy to switch between the old and new consumer.<br />
<br />
==6.4.7.7440 (March 2nd 2009)==<br />
===New features===<br />
*libraries: Have been updated to the new object test syntax.<br />
<br />
===Improvements===<br />
*compiler: speed up C compilation of E1/eskelet.c in workbench mode when using VS 2005 C++ in 64-bit. We went from a benchmark of 3 minutes down to 1 minute. It is definitely a bug in VS since their 32-bit version compiles the same code in just a matter of a few seconds.<br />
*compiler: Improved speed of error generation by caching certain disk access operations.<br />
*studio: Vastly improved population of the error list tool when thousands or errors/warnings are generated.<br />
*studio: Error list now shows a synchronization message (Windows only) when displaying the tool for the first time after a compilation.<br />
*studio: Errors are now shown first in the error list tool, for better visibility.<br />
*{{Red|compiler: Taken into account attachment status of formal generic constraints when checking conformance and detecting VUTA errors when target type is a formal generic.<br />
:'''Important:''' default attachment status of the constraints follows the "attached-by-default" setting, so the code might need to be updated by adding a detachable mark in front of the formal generic constraints if the actual generic parameters can be detachable types.}}<br />
*compiler: we now check that `is_equal' exists in ANY.<br />
*compiler: Fixed bug#15343 when backups where very large if you referenced many .NET assemblies even when not compiling for .NET.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*runtime: Fixed eweasel test#conform008 where creating an attached formal generic parameter of a generic type whose actual generic parameter is a TUPLE type would not create the proper TUPLE type.<br />
*debugger: fixed bug#15218: ~ not supported in the watch window.<br />
*debugger: improved/fixed expression evaluation related to `a = b' and `a ~ b'. As well conditional breakpoint of type `Has Changed'<br />
*compiler: Supported detection of VUTA(2) errors for unary and binary operators.<br />
*compiler: Fixed multiple issues with validity checks involving multi-constraint formal generics and "like Current" types.<br />
*compiler: Fixed system validity errors which were not previously detected or on the other hand rejected when it was correct. Fixes eweasel tests test#svalid019, test#svalid020 and test#multicon051.<br />
*compiler: Fixed incorrect C code generation when calling routine of a generic class under some circumstances (see eweasel test#ccomp040 and test#ccomp083, it fixes bug#15375).<br />
*compiler: Fixed bug with {SPECIAL}.put_default which did not insert the correct object for expanded generic derivations of SPECIAL. It fixes eweasel test#exec283 and test#catcall007.<br />
*compiler: Fixed improper precedence of the new object test syntax. It fixes eweasel test#syntax056 and test#attach053.<br />
*runtime: Fixed various memory corruption when manipulation large SPECIAL (i.e. whose actual size is greater than 4GB).<br />
<br />
===User changes===<br />
*general: Updated all our libraries to use the new object test syntax.<br />
*favorites: Data is now kept in project's session data; favorites are kept even after a recompilation from scratch.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.7252 (February 23rd 2009)==<br />
===New features===<br />
*compiler: Added support for the new syntax for object test, i.e. <e>attached {T} exp as u</e> instead of <e>{u: T} expr</e><br />
*syntax_updater: Syntax updater will convert the old syntax for object test to the new one, and will also perform some optimizations, such as transforming <e>{t: like x} x</e> into just <e>attached x as t</e>.<br />
<br />
===Improvements===<br />
*compiler: Supported object tests using the same object test local name in a single feature provided that their scopes do not conflict.<br />
*compiler: speed up parsing time in compiler that can provide about 3% speed up.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*runtime: Fixed bug#15280 and eweasel test#except034 that {EXCEPTION_MANAGER}.last_exception not cleared after successful retry if melted.<br />
*compiler: Correctly reported VEVI error for attributes initialized from a creation procedure by calling a once routine because the latter is not guaranteed to be executed on subsequent calls.<br />
*debugger: Fixed bug#15384: Debugger does not step at correct position (related to require else...)<br />
*debugger: now the debugger remembers correctly the breakpoint, even when recompiling from scratch.<br />
*compiler: Fixed some issues with non-conforming inheritance (bug#15224)<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.7062 (February 9th 2009)==<br />
===New features===<br />
* Eiffel2Java: void-safe, added void-safe example.<br />
* EiffelWeb: void-safe.<br />
<br />
===Improvements===<br />
*compiler: attached attribute initialization in creation procedures is now detected not only by inspecting the top-level instructions, but also the nested complex instructions with several possible execution paths, like conditional instruction, multi-branch, etc.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*testing: Fixed a bug where minimization of test was not done resulting in very large regression tests.<br />
*compiler: Fixed eweasel test#attach047 where type of array of string passed as argument to the creation procedure of the root class should have an attached actual argument type.<br />
*compiler: Fixed eweasel test#svalid018 where a crash occurred in `process_converted_expr_as' because we failed to verify that the expression still compiles fine even if inherited, because although it might compile fine in the ancestor, in the descendant it might not if they use a different set of options (e.g. non-void-safe in parent and void-safe in descendant).<br />
*eiffelweb: Fixed issue with `hexa_to_ascii' to make sure we process correctly even incorrectly encoded URL. Added `insert_pair_without_encoding' and `parse_urlencoded_input'. Fixed input_data to return an empty string and not to report an error and the content_length is empty as it is permitted to do so.<br />
*eiffelweb: Fixed issue bug#15267 by inheriting from SHARED_STDIN and SHARED_STDOUT to provide `stdin' and `output' in CGI_IN_AND_OUT.<br />
<br />
===User changes===<br />
*{{Red|base: Made several changes in EiffelBase so that the same version can be compiled in void-safe mode as well as in non-void safe mode. The code that might not be compile anymore is `create {CELL [SOME]}' because default_create is not a creation procedure anymore.}}<br />
<br />
===Developer changes===<br />
*studio: The Groups tool and Favorites tool are now based on ESF.<br />
*studio: Significant changes made in ESF tool foundations to further optimize startup and memory performance. Panels are no longer created unless the panel UI is actually needed.<br />
<br />
==6.4.7.6930 (February 2nd 2009)==<br />
===New features===<br />
*compiler: for enhanced backward compatibility with 6.3, estudio and ec/ecb have a new command line option `-compat' to launch EiffelStudio or the command line compiler with compilation settings compatible with those of 6.3. On Windows, you also have a new shortcut entry in the start menu for launching EiffelStudio in this compatibility mode.<br />
<br />
===Improvements===<br />
*compiler: Better explanation for VDPR(3) errors when two or more precursor are available by listing all the precursors.<br />
*compiler: Non-void arguments are now detected not only when they are specified in the voidness tests in immediate preconditions, but also in inherited ones.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed eweasel test#attach042 and test#attach043 where type of agent was incorrect when target was of type `like Current' or when the routine had no open arguments, in both cases the compiler generated detachable types when attached were expected.<br />
*compiler: Fixed some regressions eweasel test#fixed119 and test#incr318.<br />
*compiler: Fixed invalid precursor missed detection thus fixing eweasel test#valid117.<br />
*runtime: Fixed eweasel test#runtime011 were a memory corruption could occur when twining a SPECIAL or a TUPLE object under certain circumstances.<br />
*studio: Fixed a bug where editor will disappear when debugging.<br />
<br />
===User changes===<br />
*compiler: renamed VUPR errors to their ECMA name VDPR.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.6833 (January 26th 2009)==<br />
===New features===<br />
===Improvements===<br />
*wel: now void-safe<br />
*lex: now void-safe<br />
*encoding: now void-safe<br />
*process: now void-safe<br />
*time: added void-safe sample<br />
===Feature removed===<br />
===Bug fixes===<br />
*studio: Fixed bug#15253 where editor is missing from docking layout.<br />
*base: Fixed bug#15266 where we incorrectly merged the code value for {IO_EXCEPTION} and {RUNTIME_IO_EXCEPTION} thus breaking existing code not based on Eiffel exception object. (eweasel test#except035)<br />
*base: Fixed bug#15273 and eweasel test#except033 that an exception thrown through rescues caused infinite loop.<br />
*studio: Fixed the bug "Show disambiguated names" and "Show obsolete items" button on completion window did not function correctly and made tooltips on option buttons translatable.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.6747 (January 19th 2009)==<br />
===New features===<br />
===Improvements===<br />
*{{Red|base: Updated the IMMUTABLE_STRING classes to have an efficient string extraction query `shared_substring' which will let you create a substring of an existing immutable string without actually duplicating the data.}}<br />
*studio: Added option in the new library dialog to show only void-safe libraries, for void-safe projects.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed a bug with pre/post actions which were always executed regardless of the specified condition.<br />
*runtime: Fixed eweasel test#store020 where our recoverable store mechanism could not retrieve an object if it was generic and using a formal as actual generic parameter in a generic derivation using an expanded type. This is because in 6.2, we decided not to perform the instantiation of the attribute as it was not working properly when generic derivation is a generic expanded type. For the time being, if there is a mismatch where expected type is a FORMAL_TYPE, we try to instantiate it in the current processed type and if there is a match then we know it is ok, otherwise we reject the code. This also fixes bug#15256.<br />
*runtime: Fixed eweasel test#store019 where using the SED facilities to store/retrieve attributes which are attached would fail.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.6645 (January 12th 2009)==<br />
===New features===<br />
*studio: Added compile_all, syntax_updater and Eiffel image embedder tool to the EiffelStudio delivery. They are located under $ISE_EIFFEL/tools/spec/$ISE_PLATFORM/bin.<br />
*editor: Added `flush' to force a full load of texts.<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed bug#15235 where some C compilers do not like that we generate a C array of size 0.<br />
*compiler: Fixed correctly location reporting of error classes, using the location where the code is written which differs from the current class being analyzed.<br />
*compiler: Fixed bug#15139 by checking when parts of a multi-branch conditional instruction even when the inspect expression does not type check (see test#valid228).<br />
*compiler: Fixed test#attach039 by using written class when evaluating precursor features as the current feature may be inherited.<br />
*compiler: Fixed bug#15144 by checking that a self-initializing attribute is not processed recursively (see test#term169).<br />
*compiler: Fixed bug#15129 by using a mixed routine-attribute table for attributes that may be self-initializing (see test#final072).<br />
*studio: Fixed issue bug#15222 to respected existing note clause tags and values.<br />
*finish_freezing: Fixed typo reported in bug#15239.<br />
*net: Move definition of FD_SETSIZE before using the Windows header files so that we can really listen on 256 descriptors (breaking change introduced in the IPv6 version which is now the official).<br />
===User changes===<br />
*studio: Added EIS built-in variable "ISE_DOC_UUID" with value of "http://doc.eiffel.com/isedoc/uuid".<br />
===Developer changes===<br />
<br />
==6.4.7.6592 (January 5th 2009)==<br />
===New features===<br />
===Improvements===<br />
*studio: Automatic class licenser now preserves all other note clause terms when replacing a license in the class text.<br />
===Feature removed===<br />
===Bug fixes===<br />
*studio: Fixed reporting of feature errors to report the correct class name when referring to parent class errors.<br />
*studio: Fixed EIS tool broken by either compiler changes or improper attachment usage.<br />
*studio: Fixed a library target compiled as an application target was not editable by EIS.<br />
*studio: Fixed a bug that note elements were not properly setup when recomputing configuration, which caused missing of some EIS entries.<br />
===User changes===<br />
*{{red|net: The IPv6 version of the EiffelNet library is now the official one. The old one has been moved in the obsolete cluster.}}<br />
*{{red|compiler: The compiler now accepts <e>attribute</e> and <e>note</e> as keyword by default.}}<br />
*{{red|argument parser: The argument parser library introduces some breaking changes in deferred feature signatures due to the conversion to Void-Safe.}}<br />
*studio: Added built-in EIS variable "ISE_DOC" with value of "http://doc.eiffel.com".<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.6402 (December 27th 2008)==<br />
===New features===<br />
===Improvements===<br />
*compiler: speed up degree 6 by not looking at the content of all .e files to figure out the associated class name. We now assume on the first pass that the file name is the class name. On EiffelStudio, if none of the file were buffered, we went from about 1 minute spent to just less than 3 seconds. The improvement should be even more when classes are on a remote drive.<br />
*studio: Set current line number as initial line number of the Go to line dialog. This fixed bug#15193.<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed missing detection of VRFT errors in cases like "<e>a: TUPLE [a: TUPLE [out: INTEGER]]</e>". Fixes eweasel test#exec293.<br />
*compiler: Fixed catcall checker crashing when enabled. Fixes eweasel test#term166.<br />
*runtime: Fixed eweasel test#exec293 where accessing labels of a Void tuple would not cause a call on Void target exception.<br />
*studio: Fixed a bug that shortcut preferences with `+'/`Numpad +' could not be modified.<br />
<br />
===User changes===<br />
*compiler: now the compiler does not produce the class progress output in batch mode. If you want the old behavior, you have to use -verbose option.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.6313 (December 22nd 2008)==<br />
===New features===<br />
*base: Added `same_keys' to HASH_TABLE. You can redefine this feature to use a different comparison criterion for the keys.<br />
<br />
===Improvements===<br />
*compiler: Improved implementation of ~ and expanded comparison to use `is_equal' directly rather than using `equal'.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed eweasel test#exec292 where type of inherited formals where incorrectly interpreted in descendants.<br />
*base: Fixed a bug that would not recognize a class name A_SOMETHING as a valid identifier for INTERNAL.<br />
*studio: New library dialog now correctly sorts the contents base on the library name and not the path.<br />
*studio: Fixed bug#15173: EiffelStudio crash when selecting library<br />
*runtime: Fixed eweasel test#runtime010 where certain allocation patterns could cause a major slow down during a garbage collection cycle.<br />
<br />
===User changes===<br />
*{{Red|base: We do not use <e>is_equal</e> in EiffelBase, but instead the ~ operator. This could break some of your code, especially with HASH_TABLE.}}<br />
<br />
===Developer changes===<br />
<br />
==6.4.76164 (December 15th 2008)==<br />
===New features===<br />
* studio: In-grid-item selection in Error List tool.<br />
* editor: Customizing some editor attributes, fonts, line height and etc., per instance.<br />
<br />
===Improvements===<br />
*studio: Tabulated format of copied selection from the Error List tool.<br />
===Feature removed===<br />
===Bug fixes===<br />
*studio: Fixed bug#14237 where some manipulations on the UI could corrupt the EiffelStudio docking layout.<br />
*studio: Fixed bug#12453 where VYCQ error would print the feature name in blue rather than in green.<br />
*studio: Added a protection for bug#15116 where we could still try to access `content' while EiffelStudio has already destroyed the panel.<br />
*studio: Fixed bug#15073 that Pick and drop from output window didn't work when no class tool was available.<br />
*compiler: Fixed eweasel test#multicon050 where compiler did not handle renaming of a routine with an alias into a routine without one as it still thought the alias was available.<br />
*compiler: Added printing of referenced configuration file in which there is a conflict. This fixes bug#15099.<br />
*compiler: Fixed an incorrect VUTA(2) error being reported when compiling a static access call in void-safe mode. This fixes eweasel test#valid223.<br />
*compiler: Fixed an incrementality corruption (bug#15061 and eweasel test#incr296) which would occur a feature has an invalid signature for one failed compilation before it is fixed again.<br />
*compiler: Fixed bug#15027 where if you have a class which was originally only in an override cluster and then keep it in the override cluster but also now in a normal cluster, then we would not remove the compiled information from the override cluster which would cause in a later compilation the class to be forcibly removed from the system even though it is still in use.<br />
<br />
===User changes===<br />
*{{Red|base: it is now using the new alias syntax for operators instead of obsolete syntax based on `infix/prefix' keywords. As a result some of your code may not compile.}}<br />
===Developer changes===</div>Paulbhttps://dev.eiffel.com/index.php?title=EiffelStudio_6.4_Releases&diff=12549EiffelStudio 6.4 Releases2009-05-12T23:27:55Z<p>Paulb: /* New features */</p>
<hr />
<div>[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}<br />
<br />
= EiffelStudio 6.4.x Releases=<br />
<br />
==6.4.x==<br />
Placeholder for new stuff since last intermediate release. <br />
===New features===<br />
* Completion now has a feature/class description tool tip (on by default)<br />
<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.8600 (May 10th 2009)==<br />
===New features===<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed eweasel test#term177 where having some routines using anchors to arguments from a non-generic class used in a generic class where a formal generic parameter is given as argument would cause the compiler to crash.<br />
* compiler: Fixed eweasel test#term176 and test#incr323 where if you have a syntax error at degree 5 then the compiler would misbehave after fixing the syntax error.<br />
* compiler: Fixed bug#15761 when an object test local was not set in the generated C code if the source is a creation expression (test#attach064).<br />
<br />
===User changes===<br />
* net: Renamed privately exported `make_from_fd' to `make_from_descriptor_and_address'.<br />
* compiler: Ensured that particular options specified in the library cannot be overridden in a project, because they apply to the source code (e.g., specify a variant of a syntax) rather than to the code generation (e.g., specify which assertions have to be monitored).<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.8493 (May 4th 2009)==<br />
===New features===<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*debugger: fixed bug#15557: Empty value shifts the popup window in Watch tool<br />
*debugger: fixed recently introduced bug related to expression evaluation and conditional breakpoints.<br />
*debugger: Prevented crash from "bug#15693: catcall and segfault produced" by handling erroneous cases in the debugger.<br />
*debugger: fixed bug#15708: Incorrect VUOT error being reported in debugger watch window<br />
*runtime: Fixed eweasel test#expanded008 and bug#15693 where if you had an expanded with references attributes then the garbage collector would not update the internal references of the expanded and cause some memory corruption.<br />
*install: Fixed incorrect link for compatibility mode of EiffelStudio on Windows.<br />
*install: Fixed improper COM registration of .NET consumer preventing compilation of .NET projects.<br />
*compiler: Fixed broken generation of single threaded DLL.<br />
*net: Made compilable in void-safe mode since new compiler is detecting errors that previous compiler did not catch.<br />
*build: Fixed bug#15578 in EiffelBuild which causes it to report an exception trace when it should not. This was due to a bug introduced in our preference library which also was showing hidden preferences if no default value was provided in the configuration file.<br />
<br />
===User changes===<br />
*process: File redirection in the process library will now append to a file rather than recreating it.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.8382 (April 27th 2009)==<br />
===New features===<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*debugger: fixed recently introduced bug#15610: Feature call on void target in {DBG_EXPRESSION_EVALUATOR_B}.is_boolean_expression in EiffelStudio.<br />
*debugger: fixed bug#15669 Feature call on void target in {AST_DEBUGGER_BREAKABLE_STRATEGY}.initialize_current_context<br />
*debugger: improved support for object test locals<br />
*runtime: Fixed a non-detection of stack overflow in a multithreaded application on Linux.<br />
<br />
===User changes===<br />
* compiler: Incremented ECF XML schema version to reflect the recent changes.<br />
* compiler: Replaced ECF schema attribute ''syntax_level'' of an integer type with ''syntax'' of a string type that contains one of the three possible values.<br />
* compiler: Replaced ECF schema attribute ''is_void_safe'' of a boolean type with ''void_safety'' of a string type that contains one of the three possible values (''none'' - no void safety checks, ''all'' - all void safety checks, ''initialization'' - on-demand void safety checks, i.e. only for entities that are attached).<br />
* compiler: Application options are applied after applying options specified in the library when option ''Use application options'' is set to true.<br />
* {{Red|compiler: Added compatibility for recognizing code using `infix/prefix' instead of `alias'.}}<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.8212 (April 13th 2009)==<br />
===New features===<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed bug#15570 that caused the compiler to crash or misbehave when redeclaring a feature that has object tests in both preconditions and postconditions (test#attach061).<br />
*studio: Fixed bug#15550 that object test local of a expression type wasn't formatted correctly in flat view.<br />
*studio: Fixed bug#15092: Adding pre-compilation task with empty command causes config file parse error.<br />
*studio: Fixed bug#15584: Search report does not support standard shortcuts available elsewhere.<br />
*studio: Fixed bug#15590 that "~" and "/~" were not highlighted as operators in the editor.<br />
*compiler: Fixed eweasel test#melt012 where if you have a routine with a rescue clause where an exception is raised while executing the compound of a 'when' clause the interpreter stack would get corrupted.<br />
*compiler: Fixed a bug on Windows where including some Eiffel multithreaded code in a DLL would cause a crash. This was due to the way we compiled our Thread Local Storage using a Microsoft optimization that only works for normal binaries, not DLLs.<br />
*compiler: Fixed eweasel test#melt085 and test#melt086 where using Precursor in a manifest array, manifest tuple or expression of an object test would cause a crash at runtime.<br />
*runtime: Fixed eweasel test#thread003 and test#thread007 where you could have a memory corruption at runtime when calling {THREAD}.join and no children threads have been launched yet.<br />
*runtime: Fixed test#thread008 where you could have a memory corruption at runtime when calling {MEMORY}.find_referers.<br />
*runtime: Fixed test#thread002 where early termination of parent threads could corrupt memory if children thread are still alive.<br />
*base: Fixed INTERNAL so that `set_reference_field' can be used to set a reference attribute to Void if the attribute is detachable.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.8090 (April 6th 2009)==<br />
Placeholder for new stuff since last intermediate release. <br />
===New features===<br />
* EiffelParse: void-safe, added void-safe example.<br />
<br />
===Improvements===<br />
*profiler: provides better precision of profiler result and standardized internal computation of the profiler to be independent of the platform on which profiling is done.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*debugger: better handling of object test locals in debugger (the scopes are not yet supported, and then object test with same name might cause trouble in watch tool).<br />
*runtime: Fixed eweasel test#exec310 and bug#14477 where if you have a class name that is longer than 512 bytes or an attribute name longer than 512 bytes and you call `out' it would cause a buffer overflow.<br />
*runtime: Fixed an unnoticeable performance issue with the C storable/retrieval mechanism (bug#14495).<br />
*runtime: Fixed incorrect display of NATURAL_32 attributes when calling `out' (fixes eweasel test#exec298 and bug#13862.<br />
*runtime: Fixed eweasel test#exec300 and test#store022 with the processing of deep_twin/deep_equal/store/retrieve of an expanded object.<br />
*runtime: Fixed eweasel test#exec311 where profiling with invariant checking enabled would cause a profiler failure (profile stack botched).<br />
*runtime: Fixed eweasel test#melt091 where if you somehow end up melting the code of STRING and that you have melted code that creates a manifest string it will cause the interpreter to crash.<br />
*studio: Fixed bug#15546: Can't get a flat view of a compiled class.<br />
*studio: Fixed bug#13986: Locale list becomes empty after "Restore defaults" action.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.7957 (March 29th 2009)==<br />
===New features===<br />
*{{Red|base: Implemented {EXCEPTION}.cause which returns the exception object that caused current exception in rescue execution.}}<br />
*{{Red|compiler: Added support for detecting Mac OS X and VxWorks target compilation.}}<br />
<br />
===Improvements===<br />
*encoding: Cached the conversion descriptors on Unix systems to avoid many `iconv_open' calls, which increases performance by around 25% - 300% depending on platforms.<br />
*net: Added ability to only listen on the loopback address in NETWORK_STREAM_SOCKET.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
* studio: Fixed bug#15516: Error tool reshuffles needlessly.<br />
* studio: Errors reported by one subsystem and then taken over by another now retain the previous selection in the error list tool.<br />
* studio: Fixed some crashes when trying to execute tests for which there is no .exe or trying to open documentation from EiffelStudio and Firefox cannot open the links (fixed bug#15556).<br />
* {{Red|base: Fixed the inconsistent behaviors of {EXCEPTIONS}.original* with 5.7 potentially breaking code using exceptions}}.<br />
* compiler: Fixed eweasel test#exec151 where exceptions triggered in workbench mode where you have a mix of melted and frozen code could corrupt the stack.<br />
* compiler: Fixed eweasel test#except035 by manually raising an exception if on Solaris based OS we read EOF and the file is either stdout or stderr. Other platforms remain unchanged.<br />
*{{Red|net: Fixed some issues with the EiffelNet library when trying to listen for either any address or the loopback address in both IPv4 and IPv6 mode on Windows. It also solves a security issue since if you have IPv6 enabled, then listening to the loopback would also listen to any address on the IPv4 interface. This is a Windows only bug.}}<br />
<br />
===User changes===<br />
* compiler: Relaxed note element in .ecf to accept anything.<br />
* studio: Changed EIS to use note element in ecf in this style: <note><eis name="NAME1"><eis name="NAME2"></note><br />
<br />
===Developer changes===<br />
<br />
==6.4.7.7848 (March 23rd 2009)==<br />
===New features===<br />
===Improvements===<br />
*studio: Better formatting of verbatim strings, that guarantees that copy/pasting from the formatted text will yield the same string content as the one in the Eiffel source code.<br />
*base: Changed IO_MEDIUM.last_string to be attached so that existing code can easily be migrated to void-safe without changes in the pattern `read_line/last_string'.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*{{Red|runtime: Improved signal handling to use more recent APIs when available. It especially fixes issue on Solaris where a signal handler was not reinstated after a SIGSEGV signal. It fixes eweasel test#except029.}}<br />
*{{Red|runtime: Fixed a bug with exception generated during the evaluation of a once in melted mode. This fixes eweasel test#except014 and test#except030.}}<br />
*runtime: Worked around a bug in the Sun C compiler which caused the creation of SPECIAL in melted code to always fail when runtime is compiled with optimizations. It fixes eweasel test#melt070, test#melt081, test#term139, test#store014 and test#tuple006.<br />
*runtime: Fixed a potential infinite loop when exiting a crash application when while quitting a signal is received which cause our last print statement to also fail (case of SIGPIPE), then it will infinitely repeat that sequence. This fixes the issue where eweasel test#vsrp208, although it was passing, ec was still using 100% CPU.<br />
*finish_freezing: Fixed various bugs introduced at rev#77762.<br />
*{{Red|compiler: Fixed eweasel test#syntax042 and test#syntax047 as well as bug#15514 that allowed invalid characters in new C external specification. Removed generation of error when trying the old syntax, the syntax error will be based in the new syntax now. Added generation of warnings when using the old syntax and warnings are enabled.}}<br />
*{{Red|compiler: Fixed eweasel test#final077 where the arguments passed to a creation expression where not properly processed when analyzing expressions. This caused the following instruction: "<e>l_x := x.y.z (create .make (l_x))</e>" to override the value of `l_x' with the value of `x.y' which is wrong.}}<br />
*studio: Fixed a bug where EiffelStudio would not see that the class text has changed while reporting an error and thus shows the text as it was last seen by EiffelStudio at the previous error reporting.<br />
<br />
===User changes===<br />
*base: Explicitly excluded non-void safe classes from the void-safe version of EiffelBase. The list of excluded classes are:<br />
:* COMPACT_CURSOR_TREE<br />
:* LINKED_CURSOR_TREE<br />
:* TWO_WAY_CURSOR_TREE<br />
:* COMPACT_TREE_CURSOR<br />
:* LINKED_CURSOR_TREE_CURSOR<br />
:* TWO_WAY_CURSOR_TREE_CURSOR<br />
<br />
===Developer changes===<br />
*compiler: Improved parser and changed factories so that we get proper position information for strings and verbatim strings.<br />
*compiler: Improved parser benchmark tool so that one can provide the proper type of parser (obsolete, transitional, standard).<br />
<br />
==6.4.7.7762 (March 17th 2009)==<br />
===New features===<br />
*ec: Added command line version of auto test (not available with ecb)<br />
*net: Unix part of EiffelNet is now also void-safe.<br />
<br />
===Improvements===<br />
* debugger: watch tool now support object test locals in expression<br />
* compiler: Conformance checks do not take attachment status of types into account for void-unsafe code.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
* studio: Supported new attached syntax for code completion.<br />
* studio: Replaced documentation generation marks !/? with attached/detachable keywords.<br />
* compiler: Fixed potential issue which prevents error/warning source lines from being displayed.<br />
* compiler: Fixed eweasel test#agent004 and test#agent010 by ensuring the result type of the agent is properly instantiated in the agent target type context.<br />
* compiler: Fixed eweasel test#incr321 when if you finalize after removing a class from the system, then execution of workbench code fails.<br />
* debugger: Fixed bug#15494: Cannot eval detached expression (i.e VUTA error)<br />
* debugger: display object test locals declared without type (i.e: attached foo as x)<br />
* c_compiler: Updated to newer version of the MSYS DLL so that it should also work on Windows Vista 64-bit.<br />
<br />
===User changes===<br />
* studio: set the project name in status bar, when we load a configuration (i.e: even before any compilation)<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.7646 (March 9th 2009)==<br />
===New features===<br />
* compiler: supported explicitly defined "stable" attributes. Stable attribute is an attribute of a detachable type that is never assigned void. This property makes it possible to apply to it most of the CAP rules suitable for read-only entities. The stable attributes can be declared using value ''stable'' of the note tag ''option'', for example: <e><br />
a: detachable MY_TYPE note option: stable attribute end</e><br />
<br />
===Improvements===<br />
*Made the code of the Eiffel Matrix generator generates code that compiles without warnings.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*base: Fixed eweasel test#list003 where calling copy on a non-empty LINKED_LIST and providing the same list as argument would wipe out the content of the LINKED_LIST instead of preserving the elements.<br />
*base: Fixed eweasel test#list014 where calling `merge_left' and `merge_right' on a TWO_WAY_LIST was violating the invariant.<br />
*base: Fixed eweasel test#array005 where calling `wipe_out' on an ARRAY2 was violating the invariant.<br />
*install: Fixed missing distribution of `syntax_updater' tool on Unix.<br />
*dotnet: Fixed a crash while compiling a .NET system in void-safe mode when the class inherited from a .NET class.<br />
*dotnet: Fixed bug in .NET code generation where if you do not specify a version of the .NET runtime in your config file, it will always use .NET 1.0 if installed causing the .NET metadata consumer to fail since it is compiled against v2.0 of .NET.<br />
*install: Fixed a bug in the Makefile.SH needed to compile the C code of our Eiffel libraries which could cause the C compilation to fail on a multiprocessor machine.<br />
*syntax_updater: Fixed a bug when converting a class that contains an attribute with an assign clause as well as an attribute clause (See updated eweasel test#rdtp001).<br />
*{{red|store: Fixed bug#15470 introduced in 6.3 where some HASH_TABLE lookups failed because HASH_TABLE is now using `~' instead of `is_equal'. Now EiffelStore uses `same_string' to compare the keys of the HASH_TABLE}}<br />
*studio: Fixed bug#15447 where selecting the properties entry for the context menu would cause a crash.<br />
*debugger/studio: fixed bug#15232: Loop variants mess up debugger step-through<br />
*debugger: Fixed bug#15300: Objects Tab<br />
<br />
===User changes===<br />
*gobo: For the remaining of the 6.4 development, we are now using the latest version of the Gobo source code.<br />
<br />
===Developer changes===<br />
*consumer: The .NET consumer is now compiled in void-safe mode. Changed the GUID of the COM component and version, that way it is easy to switch between the old and new consumer.<br />
<br />
==6.4.7.7440 (March 2nd 2009)==<br />
===New features===<br />
*libraries: Have been updated to the new object test syntax.<br />
<br />
===Improvements===<br />
*compiler: speed up C compilation of E1/eskelet.c in workbench mode when using VS 2005 C++ in 64-bit. We went from a benchmark of 3 minutes down to 1 minute. It is definitely a bug in VS since their 32-bit version compiles the same code in just a matter of a few seconds.<br />
*compiler: Improved speed of error generation by caching certain disk access operations.<br />
*studio: Vastly improved population of the error list tool when thousands or errors/warnings are generated.<br />
*studio: Error list now shows a synchronization message (Windows only) when displaying the tool for the first time after a compilation.<br />
*studio: Errors are now shown first in the error list tool, for better visibility.<br />
*{{Red|compiler: Taken into account attachment status of formal generic constraints when checking conformance and detecting VUTA errors when target type is a formal generic.<br />
:'''Important:''' default attachment status of the constraints follows the "attached-by-default" setting, so the code might need to be updated by adding a detachable mark in front of the formal generic constraints if the actual generic parameters can be detachable types.}}<br />
*compiler: we now check that `is_equal' exists in ANY.<br />
*compiler: Fixed bug#15343 when backups where very large if you referenced many .NET assemblies even when not compiling for .NET.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*runtime: Fixed eweasel test#conform008 where creating an attached formal generic parameter of a generic type whose actual generic parameter is a TUPLE type would not create the proper TUPLE type.<br />
*debugger: fixed bug#15218: ~ not supported in the watch window.<br />
*debugger: improved/fixed expression evaluation related to `a = b' and `a ~ b'. As well conditional breakpoint of type `Has Changed'<br />
*compiler: Supported detection of VUTA(2) errors for unary and binary operators.<br />
*compiler: Fixed multiple issues with validity checks involving multi-constraint formal generics and "like Current" types.<br />
*compiler: Fixed system validity errors which were not previously detected or on the other hand rejected when it was correct. Fixes eweasel tests test#svalid019, test#svalid020 and test#multicon051.<br />
*compiler: Fixed incorrect C code generation when calling routine of a generic class under some circumstances (see eweasel test#ccomp040 and test#ccomp083, it fixes bug#15375).<br />
*compiler: Fixed bug with {SPECIAL}.put_default which did not insert the correct object for expanded generic derivations of SPECIAL. It fixes eweasel test#exec283 and test#catcall007.<br />
*compiler: Fixed improper precedence of the new object test syntax. It fixes eweasel test#syntax056 and test#attach053.<br />
*runtime: Fixed various memory corruption when manipulation large SPECIAL (i.e. whose actual size is greater than 4GB).<br />
<br />
===User changes===<br />
*general: Updated all our libraries to use the new object test syntax.<br />
*favorites: Data is now kept in project's session data; favorites are kept even after a recompilation from scratch.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.7252 (February 23rd 2009)==<br />
===New features===<br />
*compiler: Added support for the new syntax for object test, i.e. <e>attached {T} exp as u</e> instead of <e>{u: T} expr</e><br />
*syntax_updater: Syntax updater will convert the old syntax for object test to the new one, and will also perform some optimizations, such as transforming <e>{t: like x} x</e> into just <e>attached x as t</e>.<br />
<br />
===Improvements===<br />
*compiler: Supported object tests using the same object test local name in a single feature provided that their scopes do not conflict.<br />
*compiler: speed up parsing time in compiler that can provide about 3% speed up.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*runtime: Fixed bug#15280 and eweasel test#except034 that {EXCEPTION_MANAGER}.last_exception not cleared after successful retry if melted.<br />
*compiler: Correctly reported VEVI error for attributes initialized from a creation procedure by calling a once routine because the latter is not guaranteed to be executed on subsequent calls.<br />
*debugger: Fixed bug#15384: Debugger does not step at correct position (related to require else...)<br />
*debugger: now the debugger remembers correctly the breakpoint, even when recompiling from scratch.<br />
*compiler: Fixed some issues with non-conforming inheritance (bug#15224)<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.7062 (February 9th 2009)==<br />
===New features===<br />
* Eiffel2Java: void-safe, added void-safe example.<br />
* EiffelWeb: void-safe.<br />
<br />
===Improvements===<br />
*compiler: attached attribute initialization in creation procedures is now detected not only by inspecting the top-level instructions, but also the nested complex instructions with several possible execution paths, like conditional instruction, multi-branch, etc.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*testing: Fixed a bug where minimization of test was not done resulting in very large regression tests.<br />
*compiler: Fixed eweasel test#attach047 where type of array of string passed as argument to the creation procedure of the root class should have an attached actual argument type.<br />
*compiler: Fixed eweasel test#svalid018 where a crash occurred in `process_converted_expr_as' because we failed to verify that the expression still compiles fine even if inherited, because although it might compile fine in the ancestor, in the descendant it might not if they use a different set of options (e.g. non-void-safe in parent and void-safe in descendant).<br />
*eiffelweb: Fixed issue with `hexa_to_ascii' to make sure we process correctly even incorrectly encoded URL. Added `insert_pair_without_encoding' and `parse_urlencoded_input'. Fixed input_data to return an empty string and not to report an error and the content_length is empty as it is permitted to do so.<br />
*eiffelweb: Fixed issue bug#15267 by inheriting from SHARED_STDIN and SHARED_STDOUT to provide `stdin' and `output' in CGI_IN_AND_OUT.<br />
<br />
===User changes===<br />
*{{Red|base: Made several changes in EiffelBase so that the same version can be compiled in void-safe mode as well as in non-void safe mode. The code that might not be compile anymore is `create {CELL [SOME]}' because default_create is not a creation procedure anymore.}}<br />
<br />
===Developer changes===<br />
*studio: The Groups tool and Favorites tool are now based on ESF.<br />
*studio: Significant changes made in ESF tool foundations to further optimize startup and memory performance. Panels are no longer created unless the panel UI is actually needed.<br />
<br />
==6.4.7.6930 (February 2nd 2009)==<br />
===New features===<br />
*compiler: for enhanced backward compatibility with 6.3, estudio and ec/ecb have a new command line option `-compat' to launch EiffelStudio or the command line compiler with compilation settings compatible with those of 6.3. On Windows, you also have a new shortcut entry in the start menu for launching EiffelStudio in this compatibility mode.<br />
<br />
===Improvements===<br />
*compiler: Better explanation for VDPR(3) errors when two or more precursor are available by listing all the precursors.<br />
*compiler: Non-void arguments are now detected not only when they are specified in the voidness tests in immediate preconditions, but also in inherited ones.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed eweasel test#attach042 and test#attach043 where type of agent was incorrect when target was of type `like Current' or when the routine had no open arguments, in both cases the compiler generated detachable types when attached were expected.<br />
*compiler: Fixed some regressions eweasel test#fixed119 and test#incr318.<br />
*compiler: Fixed invalid precursor missed detection thus fixing eweasel test#valid117.<br />
*runtime: Fixed eweasel test#runtime011 were a memory corruption could occur when twining a SPECIAL or a TUPLE object under certain circumstances.<br />
*studio: Fixed a bug where editor will disappear when debugging.<br />
<br />
===User changes===<br />
*compiler: renamed VUPR errors to their ECMA name VDPR.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.6833 (January 26th 2009)==<br />
===New features===<br />
===Improvements===<br />
*wel: now void-safe<br />
*lex: now void-safe<br />
*encoding: now void-safe<br />
*process: now void-safe<br />
*time: added void-safe sample<br />
===Feature removed===<br />
===Bug fixes===<br />
*studio: Fixed bug#15253 where editor is missing from docking layout.<br />
*base: Fixed bug#15266 where we incorrectly merged the code value for {IO_EXCEPTION} and {RUNTIME_IO_EXCEPTION} thus breaking existing code not based on Eiffel exception object. (eweasel test#except035)<br />
*base: Fixed bug#15273 and eweasel test#except033 that an exception thrown through rescues caused infinite loop.<br />
*studio: Fixed the bug "Show disambiguated names" and "Show obsolete items" button on completion window did not function correctly and made tooltips on option buttons translatable.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.6747 (January 19th 2009)==<br />
===New features===<br />
===Improvements===<br />
*{{Red|base: Updated the IMMUTABLE_STRING classes to have an efficient string extraction query `shared_substring' which will let you create a substring of an existing immutable string without actually duplicating the data.}}<br />
*studio: Added option in the new library dialog to show only void-safe libraries, for void-safe projects.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed a bug with pre/post actions which were always executed regardless of the specified condition.<br />
*runtime: Fixed eweasel test#store020 where our recoverable store mechanism could not retrieve an object if it was generic and using a formal as actual generic parameter in a generic derivation using an expanded type. This is because in 6.2, we decided not to perform the instantiation of the attribute as it was not working properly when generic derivation is a generic expanded type. For the time being, if there is a mismatch where expected type is a FORMAL_TYPE, we try to instantiate it in the current processed type and if there is a match then we know it is ok, otherwise we reject the code. This also fixes bug#15256.<br />
*runtime: Fixed eweasel test#store019 where using the SED facilities to store/retrieve attributes which are attached would fail.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.6645 (January 12th 2009)==<br />
===New features===<br />
*studio: Added compile_all, syntax_updater and Eiffel image embedder tool to the EiffelStudio delivery. They are located under $ISE_EIFFEL/tools/spec/$ISE_PLATFORM/bin.<br />
*editor: Added `flush' to force a full load of texts.<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed bug#15235 where some C compilers do not like that we generate a C array of size 0.<br />
*compiler: Fixed correctly location reporting of error classes, using the location where the code is written which differs from the current class being analyzed.<br />
*compiler: Fixed bug#15139 by checking when parts of a multi-branch conditional instruction even when the inspect expression does not type check (see test#valid228).<br />
*compiler: Fixed test#attach039 by using written class when evaluating precursor features as the current feature may be inherited.<br />
*compiler: Fixed bug#15144 by checking that a self-initializing attribute is not processed recursively (see test#term169).<br />
*compiler: Fixed bug#15129 by using a mixed routine-attribute table for attributes that may be self-initializing (see test#final072).<br />
*studio: Fixed issue bug#15222 to respected existing note clause tags and values.<br />
*finish_freezing: Fixed typo reported in bug#15239.<br />
*net: Move definition of FD_SETSIZE before using the Windows header files so that we can really listen on 256 descriptors (breaking change introduced in the IPv6 version which is now the official).<br />
===User changes===<br />
*studio: Added EIS built-in variable "ISE_DOC_UUID" with value of "http://doc.eiffel.com/isedoc/uuid".<br />
===Developer changes===<br />
<br />
==6.4.7.6592 (January 5th 2009)==<br />
===New features===<br />
===Improvements===<br />
*studio: Automatic class licenser now preserves all other note clause terms when replacing a license in the class text.<br />
===Feature removed===<br />
===Bug fixes===<br />
*studio: Fixed reporting of feature errors to report the correct class name when referring to parent class errors.<br />
*studio: Fixed EIS tool broken by either compiler changes or improper attachment usage.<br />
*studio: Fixed a library target compiled as an application target was not editable by EIS.<br />
*studio: Fixed a bug that note elements were not properly setup when recomputing configuration, which caused missing of some EIS entries.<br />
===User changes===<br />
*{{red|net: The IPv6 version of the EiffelNet library is now the official one. The old one has been moved in the obsolete cluster.}}<br />
*{{red|compiler: The compiler now accepts <e>attribute</e> and <e>note</e> as keyword by default.}}<br />
*{{red|argument parser: The argument parser library introduces some breaking changes in deferred feature signatures due to the conversion to Void-Safe.}}<br />
*studio: Added built-in EIS variable "ISE_DOC" with value of "http://doc.eiffel.com".<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.6402 (December 27th 2008)==<br />
===New features===<br />
===Improvements===<br />
*compiler: speed up degree 6 by not looking at the content of all .e files to figure out the associated class name. We now assume on the first pass that the file name is the class name. On EiffelStudio, if none of the file were buffered, we went from about 1 minute spent to just less than 3 seconds. The improvement should be even more when classes are on a remote drive.<br />
*studio: Set current line number as initial line number of the Go to line dialog. This fixed bug#15193.<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed missing detection of VRFT errors in cases like "<e>a: TUPLE [a: TUPLE [out: INTEGER]]</e>". Fixes eweasel test#exec293.<br />
*compiler: Fixed catcall checker crashing when enabled. Fixes eweasel test#term166.<br />
*runtime: Fixed eweasel test#exec293 where accessing labels of a Void tuple would not cause a call on Void target exception.<br />
*studio: Fixed a bug that shortcut preferences with `+'/`Numpad +' could not be modified.<br />
<br />
===User changes===<br />
*compiler: now the compiler does not produce the class progress output in batch mode. If you want the old behavior, you have to use -verbose option.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.6313 (December 22nd 2008)==<br />
===New features===<br />
*base: Added `same_keys' to HASH_TABLE. You can redefine this feature to use a different comparison criterion for the keys.<br />
<br />
===Improvements===<br />
*compiler: Improved implementation of ~ and expanded comparison to use `is_equal' directly rather than using `equal'.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed eweasel test#exec292 where type of inherited formals where incorrectly interpreted in descendants.<br />
*base: Fixed a bug that would not recognize a class name A_SOMETHING as a valid identifier for INTERNAL.<br />
*studio: New library dialog now correctly sorts the contents base on the library name and not the path.<br />
*studio: Fixed bug#15173: EiffelStudio crash when selecting library<br />
*runtime: Fixed eweasel test#runtime010 where certain allocation patterns could cause a major slow down during a garbage collection cycle.<br />
<br />
===User changes===<br />
*{{Red|base: We do not use <e>is_equal</e> in EiffelBase, but instead the ~ operator. This could break some of your code, especially with HASH_TABLE.}}<br />
<br />
===Developer changes===<br />
<br />
==6.4.76164 (December 15th 2008)==<br />
===New features===<br />
* studio: In-grid-item selection in Error List tool.<br />
* editor: Customizing some editor attributes, fonts, line height and etc., per instance.<br />
<br />
===Improvements===<br />
*studio: Tabulated format of copied selection from the Error List tool.<br />
===Feature removed===<br />
===Bug fixes===<br />
*studio: Fixed bug#14237 where some manipulations on the UI could corrupt the EiffelStudio docking layout.<br />
*studio: Fixed bug#12453 where VYCQ error would print the feature name in blue rather than in green.<br />
*studio: Added a protection for bug#15116 where we could still try to access `content' while EiffelStudio has already destroyed the panel.<br />
*studio: Fixed bug#15073 that Pick and drop from output window didn't work when no class tool was available.<br />
*compiler: Fixed eweasel test#multicon050 where compiler did not handle renaming of a routine with an alias into a routine without one as it still thought the alias was available.<br />
*compiler: Added printing of referenced configuration file in which there is a conflict. This fixes bug#15099.<br />
*compiler: Fixed an incorrect VUTA(2) error being reported when compiling a static access call in void-safe mode. This fixes eweasel test#valid223.<br />
*compiler: Fixed an incrementality corruption (bug#15061 and eweasel test#incr296) which would occur a feature has an invalid signature for one failed compilation before it is fixed again.<br />
*compiler: Fixed bug#15027 where if you have a class which was originally only in an override cluster and then keep it in the override cluster but also now in a normal cluster, then we would not remove the compiled information from the override cluster which would cause in a later compilation the class to be forcibly removed from the system even though it is still in use.<br />
<br />
===User changes===<br />
*{{Red|base: it is now using the new alias syntax for operators instead of obsolete syntax based on `infix/prefix' keywords. As a result some of your code may not compile.}}<br />
===Developer changes===</div>Paulbhttps://dev.eiffel.com/index.php?title=Service_Consumers&diff=12490Service Consumers2009-04-03T23:48:00Z<p>Paulb: Removed attachment marks</p>
<hr />
<div>[[Category:EiffelStudio Services]]<br />
Services consumers are a simplest and safest means to use [[Griffin]]-based services from within [[:Category:EiffelStudio|EiffelStudio]].<br />
<br />
== Services Are Tentative ==<br />
Given the nature of [[Griffin]] services it is paramount that a service be checked for existence before attempting to use a service interface. Querying for a service is not guaranteed to return a service even if it was available at some point. A service may have been available at the time of writing but it may not be available when a version of the [[:Category:EiffelStudio|EiffelStudio]] product is released. Many reasons exist for the tentative nature of a service, ranging from research, insufficient stability to meet the release deadline or deprecation. Building functionality around services should always respect the tentative nature and work to the best abilities, or restrict functionality, without the service in place. Service consumers can help.<br />
<br />
== Using Consumers ==<br />
The service consumer class ([https://svn.origo.ethz.ch/eiffelstudio/trunk/Src/framework/patterns/service_coupling/service_consumer.e SERVICE_CONSUMER] is generic and requires a generic parameter conforming SERVICE_I (base of all services). Once declared and instantiated the consumer may be used to query the service's existence and then access the service.<br />
<br />
Below is a simple example of using the [[Session Manager Service]]:<br />
<eiffel><br />
store_state<br />
local<br />
consumer: SERVICE_CONSUMER [SESSION_MANAGER_S]<br />
service: !SESSION_MANAGER_S<br />
do<br />
create consumer<br />
if consumer.is_service_available then<br />
-- Service is available and can be used<br />
if attached {SESSION_I} consumer.service.retrieve (False) as session then<br />
session.set_value (is_sorted, "com.eiffel.my_tool.sorted")<br />
end<br />
end<br />
</eiffel><br />
<br />
=== Using Local Service Providers ===<br />
Service consumers are used in place of using a service provider interface ([https://svn.origo.ethz.ch/eiffelstudio/trunk/Src/framework/patterns/service_coupling/service_provider.e SERVICE_PROVIDER]) directly, encapsulating the service and providing safe access to the service through a status function. Creating a service consumer using <eiffel>default_create</eiffel> as above will make use of the global service heap to fetch a service, based on [https://svn.origo.ethz.ch/eiffelstudio/trunk/Src/framework/patterns/service_coupling/service_consumer.e SERVICE_CONSUMER]'s generic parameter [https://svn.origo.ethz.ch/eiffelstudio/trunk/Src/Eiffel/API/framework/ecosystem/services/session/session_manager_s.e SESSION_MANAGER_S]. If a local service provider is available then creation of a service consumer should always use <eiffel>make_with_provider</eiffel> creation routine, because the local service provider may restrict or proffer services not available in the global service heap.<br />
<br />
<eiffel><br />
service_provider: SERVICE_PROVIDER<br />
-- Local service provider<br />
<br />
store_state<br />
local<br />
consumer: SERVICE_CONSUMER [SESSION_MANAGER_S]<br />
do<br />
-- Create service consumer with the local service provider of Current<br />
create consumer.make_with_provider (service_provider)<br />
if consumer.is_service_available then<br />
...<br />
end<br />
end<br />
</eiffel></div>Paulbhttps://dev.eiffel.com/index.php?title=EiffelStudio_6.4_Releases&diff=12462EiffelStudio 6.4 Releases2009-03-25T22:44:54Z<p>Paulb: /* Bug fixes */</p>
<hr />
<div>[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}<br />
<br />
= EiffelStudio 6.4.x Releases=<br />
<br />
==6.4.x==<br />
Placeholder for new stuff since last intermediate release. <br />
===New features===<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
* studio: Fixed bug#15516: Error tool reshuffles needlessly.<br />
* studio: Errors reported by one subsystem and then taken over by another now retain the previous selection in the error list tool.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.7848 (March 23rd 2009)==<br />
===New features===<br />
===Improvements===<br />
*studio: Better formatting of verbatim strings, that guarantees that copy/pasting from the formatted text will yield the same string content as the one in the Eiffel source code.<br />
*base: Changed IO_MEDIUM.last_string to be attached so that existing code can easily be migrated to void-safe without changes in the pattern `read_line/last_string'.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*{{Red|runtime: Improved signal handling to use more recent APIs when available. It especially fixes issue on Solaris where a signal handler was not reinstated after a SIGSEGV signal. It fixes eweasel test#except029.}}<br />
*{{Red|runtime: Fixed a bug with exception generated during the evaluation of a once in melted mode. This fixes eweasel test#except014 and test#except030.}}<br />
*runtime: Worked around a bug in the Sun C compiler which caused the creation of SPECIAL in melted code to always fail when runtime is compiled with optimizations. It fixes eweasel test#melt070, test#melt081, test#term139, test#store014 and test#tuple006.<br />
*runtime: Fixed a potential infinite loop when exiting a crash application when while quitting a signal is received which cause our last print statement to also fail (case of SIGPIPE), then it will infinitely repeat that sequence. This fixes the issue where eweasel test#vsrp208, although it was passing, ec was still using 100% CPU.<br />
*finish_freezing: Fixed various bugs introduced at rev#77762.<br />
*{{Red|compiler: Fixed eweasel test#syntax042 and test#syntax047 as well as bug#15514 that allowed invalid characters in new C external specification. Removed generation of error when trying the old syntax, the syntax error will be based in the new syntax now. Added generation of warnings when using the old syntax and warnings are enabled.}}<br />
*{{Red|compiler: Fixed eweasel test#final077 where the arguments passed to a creation expression where not properly processed when analyzing expressions. This caused the following instruction: "<e>l_x := x.y.z (create .make (l_x))</e>" to override the value of `l_x' with the value of `x.y' which is wrong.}}<br />
*studio: Fixed a bug where EiffelStudio would not see that the class text has changed while reporting an error and thus shows the text as it was last seen by EiffelStudio at the previous error reporting.<br />
<br />
===User changes===<br />
*base: Explicitly excluded non-void safe classes from the void-safe version of EiffelBase. The list of excluded classes are:<br />
:* COMPACT_CURSOR_TREE<br />
:* LINKED_CURSOR_TREE<br />
:* TWO_WAY_CURSOR_TREE<br />
:* COMPACT_TREE_CURSOR<br />
:* LINKED_CURSOR_TREE_CURSOR<br />
:* TWO_WAY_CURSOR_TREE_CURSOR<br />
<br />
===Developer changes===<br />
*compiler: Improved parser and changed factories so that we get proper position information for strings and verbatim strings.<br />
*compiler: Improved parser benchmark tool so that one can provide the proper type of parser (obsolete, transitional, standard).<br />
<br />
==6.4.7.7762 (March 17th 2009)==<br />
===New features===<br />
*ec: Added command line version of auto test (not available with ecb)<br />
*net: Unix part of EiffelNet is now also void-safe.<br />
<br />
===Improvements===<br />
* debugger: watch tool now support object test locals in expression<br />
* compiler: Conformance checks do not take attachment status of types into account for void-unsafe code.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
* studio: Supported new attached syntax for code completion.<br />
* studio: Replaced documentation generation marks !/? with attached/detachable keywords.<br />
* compiler: Fixed potential issue which prevents error/warning source lines from being displayed.<br />
* compiler: Fixed eweasel test#agent004 and test#agent010 by ensuring the result type of the agent is properly instantiated in the agent target type context.<br />
* compiler: Fixed eweasel test#incr321 when if you finalize after removing a class from the system, then execution of workbench code fails.<br />
* debugger: Fixed bug#15494: Cannot eval detached expression (i.e VUTA error)<br />
* debugger: display object test locals declared without type (i.e: attached foo as x)<br />
* c_compiler: Updated to newer version of the MSYS DLL so that it should also work on Windows Vista 64-bit.<br />
<br />
===User changes===<br />
* studio: set the project name in status bar, when we load a configuration (i.e: even before any compilation)<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.7646 (March 9th 2009)==<br />
===New features===<br />
* compiler: supported explicitly defined "stable" attributes. Stable attribute is an attribute of a detachable type that is never assigned void. This property makes it possible to apply to it most of the CAP rules suitable for read-only entities. The stable attributes can be declared using value ''stable'' of the note tag ''option'', for example: <e><br />
a: detachable MY_TYPE note option: stable attribute end</e><br />
<br />
===Improvements===<br />
*Made the code of the Eiffel Matrix generator generates code that compiles without warnings.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*base: Fixed eweasel test#list003 where calling copy on a non-empty LINKED_LIST and providing the same list as argument would wipe out the content of the LINKED_LIST instead of preserving the elements.<br />
*base: Fixed eweasel test#list014 where calling `merge_left' and `merge_right' on a TWO_WAY_LIST was violating the invariant.<br />
*base: Fixed eweasel test#array005 where calling `wipe_out' on an ARRAY2 was violating the invariant.<br />
*install: Fixed missing distribution of `syntax_updater' tool on Unix.<br />
*dotnet: Fixed a crash while compiling a .NET system in void-safe mode when the class inherited from a .NET class.<br />
*dotnet: Fixed bug in .NET code generation where if you do not specify a version of the .NET runtime in your config file, it will always use .NET 1.0 if installed causing the .NET metadata consumer to fail since it is compiled against v2.0 of .NET.<br />
*install: Fixed a bug in the Makefile.SH needed to compile the C code of our Eiffel libraries which could cause the C compilation to fail on a multiprocessor machine.<br />
*syntax_updater: Fixed a bug when converting a class that contains an attribute with an assign clause as well as an attribute clause (See updated eweasel test#rdtp001).<br />
*{{red|store: Fixed bug#15470 introduced in 6.3 where some HASH_TABLE lookups failed because HASH_TABLE is now using `~' instead of `is_equal'. Now EiffelStore uses `same_string' to compare the keys of the HASH_TABLE}}<br />
*studio: Fixed bug#15447 where selecting the properties entry for the context menu would cause a crash.<br />
*debugger/studio: fixed bug#15232: Loop variants mess up debugger step-through<br />
*debugger: Fixed bug#15300: Objects Tab<br />
<br />
===User changes===<br />
*gobo: For the remaining of the 6.4 development, we are now using the latest version of the Gobo source code.<br />
<br />
===Developer changes===<br />
*consumer: The .NET consumer is now compiled in void-safe mode. Changed the GUID of the COM component and version, that way it is easy to switch between the old and new consumer.<br />
<br />
==6.4.7.7440 (March 2nd 2009)==<br />
===New features===<br />
*libraries: Have been updated to the new object test syntax.<br />
<br />
===Improvements===<br />
*compiler: speed up C compilation of E1/eskelet.c in workbench mode when using VS 2005 C++ in 64-bit. We went from a benchmark of 3 minutes down to 1 minute. It is definitely a bug in VS since their 32-bit version compiles the same code in just a matter of a few seconds.<br />
*compiler: Improved speed of error generation by caching certain disk access operations.<br />
*studio: Vastly improved population of the error list tool when thousands or errors/warnings are generated.<br />
*studio: Error list now shows a synchronization message (Windows only) when displaying the tool for the first time after a compilation.<br />
*studio: Errors are now shown first in the error list tool, for better visibility.<br />
*{{Red|compiler: Taken into account attachment status of formal generic constraints when checking conformance and detecting VUTA errors when target type is a formal generic.<br />
:'''Important:''' default attachment status of the constraints follows the "attached-by-default" setting, so the code might need to be updated by adding a detachable mark in front of the formal generic constraints if the actual generic parameters can be detachable types.}}<br />
*compiler: we now check that `is_equal' exists in ANY.<br />
*compiler: Fixed bug#15343 when backups where very large if you referenced many .NET assemblies even when not compiling for .NET.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*runtime: Fixed eweasel test#conform008 where creating an attached formal generic parameter of a generic type whose actual generic parameter is a TUPLE type would not create the proper TUPLE type.<br />
*debugger: fixed bug#15218: ~ not supported in the watch window.<br />
*debugger: improved/fixed expression evaluation related to `a = b' and `a ~ b'. As well conditional breakpoint of type `Has Changed'<br />
*compiler: Supported detection of VUTA(2) errors for unary and binary operators.<br />
*compiler: Fixed multiple issues with validity checks involving multi-constraint formal generics and "like Current" types.<br />
*compiler: Fixed system validity errors which were not previously detected or on the other hand rejected when it was correct. Fixes eweasel tests test#svalid019, test#svalid020 and test#multicon051.<br />
*compiler: Fixed incorrect C code generation when calling routine of a generic class under some circumstances (see eweasel test#ccomp040 and test#ccomp083, it fixes bug#15375).<br />
*compiler: Fixed bug with {SPECIAL}.put_default which did not insert the correct object for expanded generic derivations of SPECIAL. It fixes eweasel test#exec283 and test#catcall007.<br />
*compiler: Fixed improper precedence of the new object test syntax. It fixes eweasel test#syntax056 and test#attach053.<br />
*runtime: Fixed various memory corruption when manipulation large SPECIAL (i.e. whose actual size is greater than 4GB).<br />
<br />
===User changes===<br />
*general: Updated all our libraries to use the new object test syntax.<br />
*favorites: Data is now kept in project's session data; favorites are kept even after a recompilation from scratch.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.7252 (February 23rd 2009)==<br />
===New features===<br />
*compiler: Added support for the new syntax for object test, i.e. <e>attached {T} exp as u</e> instead of <e>{u: T} expr</e><br />
*syntax_updater: Syntax updater will convert the old syntax for object test to the new one, and will also perform some optimizations, such as transforming <e>{t: like x} x</e> into just <e>attached x as t</e>.<br />
<br />
===Improvements===<br />
*compiler: Supported object tests using the same object test local name in a single feature provided that their scopes do not conflict.<br />
*compiler: speed up parsing time in compiler that can provide about 3% speed up.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*runtime: Fixed bug#15280 and eweasel test#except034 that {EXCEPTION_MANAGER}.last_exception not cleared after successful retry if melted.<br />
*compiler: Correctly reported VEVI error for attributes initialized from a creation procedure by calling a once routine because the latter is not guaranteed to be executed on subsequent calls.<br />
*debugger: Fixed bug#15384: Debugger does not step at correct position (related to require else...)<br />
*debugger: now the debugger remembers correctly the breakpoint, even when recompiling from scratch.<br />
*compiler: Fixed some issues with non-conforming inheritance (bug#15224)<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.7062 (February 9th 2009)==<br />
===New features===<br />
* Eiffel2Java: void-safe, added void-safe example.<br />
* EiffelWeb: void-safe.<br />
<br />
===Improvements===<br />
*compiler: attached attribute initialization in creation procedures is now detected not only by inspecting the top-level instructions, but also the nested complex instructions with several possible execution paths, like conditional instruction, multi-branch, etc.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*testing: Fixed a bug where minimization of test was not done resulting in very large regression tests.<br />
*compiler: Fixed eweasel test#attach047 where type of array of string passed as argument to the creation procedure of the root class should have an attached actual argument type.<br />
*compiler: Fixed eweasel test#svalid018 where a crash occurred in `process_converted_expr_as' because we failed to verify that the expression still compiles fine even if inherited, because although it might compile fine in the ancestor, in the descendant it might not if they use a different set of options (e.g. non-void-safe in parent and void-safe in descendant).<br />
*eiffelweb: Fixed issue with `hexa_to_ascii' to make sure we process correctly even incorrectly encoded URL. Added `insert_pair_without_encoding' and `parse_urlencoded_input'. Fixed input_data to return an empty string and not to report an error and the content_length is empty as it is permitted to do so.<br />
*eiffelweb: Fixed issue bug#15267 by inheriting from SHARED_STDIN and SHARED_STDOUT to provide `stdin' and `output' in CGI_IN_AND_OUT.<br />
<br />
===User changes===<br />
*{{Red|base: Made several changes in EiffelBase so that the same version can be compiled in void-safe mode as well as in non-void safe mode. The code that might not be compile anymore is `create {CELL [SOME]}' because default_create is not a creation procedure anymore.}}<br />
<br />
===Developer changes===<br />
*studio: The Groups tool and Favorites tool are now based on ESF.<br />
*studio: Significant changes made in ESF tool foundations to further optimize startup and memory performance. Panels are no longer created unless the panel UI is actually needed.<br />
<br />
==6.4.7.6930 (February 2nd 2009)==<br />
===New features===<br />
*compiler: for enhanced backward compatibility with 6.3, estudio and ec/ecb have a new command line option `-compat' to launch EiffelStudio or the command line compiler with compilation settings compatible with those of 6.3. On Windows, you also have a new shortcut entry in the start menu for launching EiffelStudio in this compatibility mode.<br />
<br />
===Improvements===<br />
*compiler: Better explanation for VDPR(3) errors when two or more precursor are available by listing all the precursors.<br />
*compiler: Non-void arguments are now detected not only when they are specified in the voidness tests in immediate preconditions, but also in inherited ones.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed eweasel test#attach042 and test#attach043 where type of agent was incorrect when target was of type `like Current' or when the routine had no open arguments, in both cases the compiler generated detachable types when attached were expected.<br />
*compiler: Fixed some regressions eweasel test#fixed119 and test#incr318.<br />
*compiler: Fixed invalid precursor missed detection thus fixing eweasel test#valid117.<br />
*runtime: Fixed eweasel test#runtime011 were a memory corruption could occur when twining a SPECIAL or a TUPLE object under certain circumstances.<br />
*studio: Fixed a bug where editor will disappear when debugging.<br />
<br />
===User changes===<br />
*compiler: renamed VUPR errors to their ECMA name VDPR.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.6833 (January 26th 2009)==<br />
===New features===<br />
===Improvements===<br />
*wel: now void-safe<br />
*lex: now void-safe<br />
*encoding: now void-safe<br />
*process: now void-safe<br />
*time: added void-safe sample<br />
===Feature removed===<br />
===Bug fixes===<br />
*studio: Fixed bug#15253 where editor is missing from docking layout.<br />
*base: Fixed bug#15266 where we incorrectly merged the code value for {IO_EXCEPTION} and {RUNTIME_IO_EXCEPTION} thus breaking existing code not based on Eiffel exception object. (eweasel test#except035)<br />
*base: Fixed bug#15273 and eweasel test#except033 that an exception thrown through rescues caused infinite loop.<br />
*studio: Fixed the bug "Show disambiguated names" and "Show obsolete items" button on completion window did not function correctly and made tooltips on option buttons translatable.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.6747 (January 19th 2009)==<br />
===New features===<br />
===Improvements===<br />
*{{Red|base: Updated the IMMUTABLE_STRING classes to have an efficient string extraction query `shared_substring' which will let you create a substring of an existing immutable string without actually duplicating the data.}}<br />
*studio: Added option in the new library dialog to show only void-safe libraries, for void-safe projects.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed a bug with pre/post actions which were always executed regardless of the specified condition.<br />
*runtime: Fixed eweasel test#store020 where our recoverable store mechanism could not retrieve an object if it was generic and using a formal as actual generic parameter in a generic derivation using an expanded type. This is because in 6.2, we decided not to perform the instantiation of the attribute as it was not working properly when generic derivation is a generic expanded type. For the time being, if there is a mismatch where expected type is a FORMAL_TYPE, we try to instantiate it in the current processed type and if there is a match then we know it is ok, otherwise we reject the code. This also fixes bug#15256.<br />
*runtime: Fixed eweasel test#store019 where using the SED facilities to store/retrieve attributes which are attached would fail.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.6645 (January 12th 2009)==<br />
===New features===<br />
*studio: Added compile_all, syntax_updater and Eiffel image embedder tool to the EiffelStudio delivery. They are located under $ISE_EIFFEL/tools/spec/$ISE_PLATFORM/bin.<br />
*editor: Added `flush' to force a full load of texts.<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed bug#15235 where some C compilers do not like that we generate a C array of size 0.<br />
*compiler: Fixed correctly location reporting of error classes, using the location where the code is written which differs from the current class being analyzed.<br />
*compiler: Fixed bug#15139 by checking when parts of a multi-branch conditional instruction even when the inspect expression does not type check (see test#valid228).<br />
*compiler: Fixed test#attach039 by using written class when evaluating precursor features as the current feature may be inherited.<br />
*compiler: Fixed bug#15144 by checking that a self-initializing attribute is not processed recursively (see test#term169).<br />
*compiler: Fixed bug#15129 by using a mixed routine-attribute table for attributes that may be self-initializing (see test#final072).<br />
*studio: Fixed issue bug#15222 to respected existing note clause tags and values.<br />
*finish_freezing: Fixed typo reported in bug#15239.<br />
*net: Move definition of FD_SETSIZE before using the Windows header files so that we can really listen on 256 descriptors (breaking change introduced in the IPv6 version which is now the official).<br />
===User changes===<br />
*studio: Added EIS built-in variable "ISE_DOC_UUID" with value of "http://doc.eiffel.com/isedoc/uuid".<br />
===Developer changes===<br />
<br />
==6.4.7.6592 (January 5th 2009)==<br />
===New features===<br />
===Improvements===<br />
*studio: Automatic class licenser now preserves all other note clause terms when replacing a license in the class text.<br />
===Feature removed===<br />
===Bug fixes===<br />
*studio: Fixed reporting of feature errors to report the correct class name when referring to parent class errors.<br />
*studio: Fixed EIS tool broken by either compiler changes or improper attachment usage.<br />
*studio: Fixed a library target compiled as an application target was not editable by EIS.<br />
*studio: Fixed a bug that note elements were not properly setup when recomputing configuration, which caused missing of some EIS entries.<br />
===User changes===<br />
*{{red|net: The IPv6 version of the EiffelNet library is now the official one. The old one has been moved in the obsolete cluster.}}<br />
*{{red|compiler: The compiler now accepts <e>attribute</e> and <e>note</e> as keyword by default.}}<br />
*{{red|argument parser: The argument parser library introduces some breaking changes in deferred feature signatures due to the conversion to Void-Safe.}}<br />
*studio: Added built-in EIS variable "ISE_DOC" with value of "http://doc.eiffel.com".<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.6402 (December 27th 2008)==<br />
===New features===<br />
===Improvements===<br />
*compiler: speed up degree 6 by not looking at the content of all .e files to figure out the associated class name. We now assume on the first pass that the file name is the class name. On EiffelStudio, if none of the file were buffered, we went from about 1 minute spent to just less than 3 seconds. The improvement should be even more when classes are on a remote drive.<br />
*studio: Set current line number as initial line number of the Go to line dialog. This fixed bug#15193.<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed missing detection of VRFT errors in cases like "<e>a: TUPLE [a: TUPLE [out: INTEGER]]</e>". Fixes eweasel test#exec293.<br />
*compiler: Fixed catcall checker crashing when enabled. Fixes eweasel test#term166.<br />
*runtime: Fixed eweasel test#exec293 where accessing labels of a Void tuple would not cause a call on Void target exception.<br />
*studio: Fixed a bug that shortcut preferences with `+'/`Numpad +' could not be modified.<br />
<br />
===User changes===<br />
*compiler: now the compiler does not produce the class progress output in batch mode. If you want the old behavior, you have to use -verbose option.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.6313 (December 22nd 2008)==<br />
===New features===<br />
*base: Added `same_keys' to HASH_TABLE. You can redefine this feature to use a different comparison criterion for the keys.<br />
<br />
===Improvements===<br />
*compiler: Improved implementation of ~ and expanded comparison to use `is_equal' directly rather than using `equal'.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed eweasel test#exec292 where type of inherited formals where incorrectly interpreted in descendants.<br />
*base: Fixed a bug that would not recognize a class name A_SOMETHING as a valid identifier for INTERNAL.<br />
*studio: New library dialog now correctly sorts the contents base on the library name and not the path.<br />
*studio: Fixed bug#15173: EiffelStudio crash when selecting library<br />
*runtime: Fixed eweasel test#runtime010 where certain allocation patterns could cause a major slow down during a garbage collection cycle.<br />
<br />
===User changes===<br />
*{{Red|base: We do not use <e>is_equal</e> in EiffelBase, but instead the ~ operator. This could break some of your code, especially with HASH_TABLE.}}<br />
<br />
===Developer changes===<br />
<br />
==6.4.76164 (December 15th 2008)==<br />
===New features===<br />
* studio: In-grid-item selection in Error List tool.<br />
* editor: Customizing some editor attributes, fonts, line height and etc., per instance.<br />
<br />
===Improvements===<br />
*studio: Tabulated format of copied selection from the Error List tool.<br />
===Feature removed===<br />
===Bug fixes===<br />
*studio: Fixed bug#14237 where some manipulations on the UI could corrupt the EiffelStudio docking layout.<br />
*studio: Fixed bug#12453 where VYCQ error would print the feature name in blue rather than in green.<br />
*studio: Added a protection for bug#15116 where we could still try to access `content' while EiffelStudio has already destroyed the panel.<br />
*studio: Fixed bug#15073 that Pick and drop from output window didn't work when no class tool was available.<br />
*compiler: Fixed eweasel test#multicon050 where compiler did not handle renaming of a routine with an alias into a routine without one as it still thought the alias was available.<br />
*compiler: Added printing of referenced configuration file in which there is a conflict. This fixes bug#15099.<br />
*compiler: Fixed an incorrect VUTA(2) error being reported when compiling a static access call in void-safe mode. This fixes eweasel test#valid223.<br />
*compiler: Fixed an incrementality corruption (bug#15061 and eweasel test#incr296) which would occur a feature has an invalid signature for one failed compilation before it is fixed again.<br />
*compiler: Fixed bug#15027 where if you have a class which was originally only in an override cluster and then keep it in the override cluster but also now in a normal cluster, then we would not remove the compiled information from the override cluster which would cause in a later compilation the class to be forcibly removed from the system even though it is still in use.<br />
<br />
===User changes===<br />
*{{Red|base: it is now using the new alias syntax for operators instead of obsolete syntax based on `infix/prefix' keywords. As a result some of your code may not compile.}}<br />
===Developer changes===</div>Paulbhttps://dev.eiffel.com/index.php?title=EiffelStudio_6.4_Releases&diff=12375EiffelStudio 6.4 Releases2009-03-12T00:11:48Z<p>Paulb: /* Bug fixes */</p>
<hr />
<div>[[Category:Releases]]__NOTOC__{{ReleaseHistoryHeader}}<br />
<br />
= EiffelStudio 6.4.x Releases=<br />
<br />
==6.4.x==<br />
Placeholder for new stuff since last intermediate release. <br />
===New features===<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
* studio: Supported new attached syntax for code completion.<br />
* studio: Replaced documentation generation marks !/? with attached/detachable keywords.<br />
* compiler: Fixed potential issue which prevents error/warning source lines from being displayed.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.7646 (March 9th 2009)==<br />
===New features===<br />
* compiler: supported explicitly defined "stable" attributes. Stable attribute is an attribute of a detachable type that is never assigned void. This property makes it possible to apply to it most of the CAP rules suitable for read-only entities. The stable attributes can be declared using value ''stable'' of the note tag ''option'', for example: <e><br />
a: detachable MY_TYPE note option: stable attribute end</e><br />
<br />
===Improvements===<br />
*Made the code of the Eiffel Matrix generator generates code that compiles without warnings.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*base: Fixed eweasel test#list003 where calling copy on a non-empty LINKED_LIST and providing the same list as argument would wipe out the content of the LINKED_LIST instead of preserving the elements.<br />
*base: Fixed eweasel test#list014 where calling `merge_left' and `merge_right' on a TWO_WAY_LIST was violating the invariant.<br />
*base: Fixed eweasel test#array005 where calling `wipe_out' on an ARRAY2 was violating the invariant.<br />
*install: Fixed missing distribution of `syntax_updater' tool on Unix.<br />
*dotnet: Fixed a crash while compiling a .NET system in void-safe mode when the class inherited from a .NET class.<br />
*dotnet: Fixed bug in .NET code generation where if you do not specify a version of the .NET runtime in your config file, it will always use .NET 1.0 if installed causing the .NET metadata consumer to fail since it is compiled against v2.0 of .NET.<br />
*install: Fixed a bug in the Makefile.SH needed to compile the C code of our Eiffel libraries which could cause the C compilation to fail on a multiprocessor machine.<br />
*syntax_updater: Fixed a bug when converting a class that contains an attribute with an assign clause as well as an attribute clause (See updated eweasel test#rdtp001).<br />
*{{red|store: Fixed bug#15470 introduced in 6.3 where some HASH_TABLE lookups failed because HASH_TABLE is now using `~' instead of `is_equal'. Now EiffelStore uses `same_string' to compare the keys of the HASH_TABLE}}<br />
*studio: Fixed bug#15447 where selecting the properties entry for the context menu would cause a crash.<br />
<br />
===User changes===<br />
*gobo: For the remaining of the 6.4 development, we are now using the latest version of the Gobo source code.<br />
<br />
===Developer changes===<br />
*consumer: The .NET consumer is now compiled in void-safe mode. Changed the GUID of the COM component and version, that way it is easy to switch between the old and new consumer.<br />
<br />
==6.4.7.7440 (March 2nd 2009)==<br />
===New features===<br />
*libraries: Have been updated to the new object test syntax.<br />
<br />
===Improvements===<br />
*compiler: speed up C compilation of E1/eskelet.c in workbench mode when using VS 2005 C++ in 64-bit. We went from a benchmark of 3 minutes down to 1 minute. It is definitely a bug in VS since their 32-bit version compiles the same code in just a matter of a few seconds.<br />
*compiler: Improved speed of error generation by caching certain disk access operations.<br />
*studio: Vastly improved population of the error list tool when thousands or errors/warnings are generated.<br />
*studio: Error list now shows a synchronization message (Windows only) when displaying the tool for the first time after a compilation.<br />
*studio: Errors are now shown first in the error list tool, for better visibility.<br />
*{{Red|compiler: Taken into account attachment status of formal generic constraints when checking conformance and detecting VUTA errors when target type is a formal generic.<br />
:'''Important:''' default attachment status of the constraints follows the "attached-by-default" setting, so the code might need to be updated by adding a detachable mark in front of the formal generic constraints if the actual generic parameters can be detachable types.}}<br />
*compiler: we now check that `is_equal' exists in ANY.<br />
*compiler: Fixed bug#15343 when backups where very large if you referenced many .NET assemblies even when not compiling for .NET.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*runtime: Fixed eweasel test#conform008 where creating an attached formal generic parameter of a generic type whose actual generic parameter is a TUPLE type would not create the proper TUPLE type.<br />
*debugger: fixed bug#15218: ~ not supported in the watch window.<br />
*debugger: improved/fixed expression evaluation related to `a = b' and `a ~ b'. As well conditional breakpoint of type `Has Changed'<br />
*compiler: Supported detection of VUTA(2) errors for unary and binary operators.<br />
*compiler: Fixed multiple issues with validity checks involving multi-constraint formal generics and "like Current" types.<br />
*compiler: Fixed system validity errors which were not previously detected or on the other hand rejected when it was correct. Fixes eweasel tests test#svalid019, test#svalid020 and test#multicon051.<br />
*compiler: Fixed incorrect C code generation when calling routine of a generic class under some circumstances (see eweasel test#ccomp040 and test#ccomp083, it fixes bug#15375).<br />
*compiler: Fixed bug with {SPECIAL}.put_default which did not insert the correct object for expanded generic derivations of SPECIAL. It fixes eweasel test#exec283 and test#catcall007.<br />
*compiler: Fixed improper precedence of the new object test syntax. It fixes eweasel test#syntax056 and test#attach053.<br />
*runtime: Fixed various memory corruption when manipulation large SPECIAL (i.e. whose actual size is greater than 4GB).<br />
<br />
===User changes===<br />
*general: Updated all our libraries to use the new object test syntax.<br />
*favorites: Data is now kept in project's session data; favorites are kept even after a recompilation from scratch.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.7252 (February 23rd 2009)==<br />
===New features===<br />
*compiler: Added support for the new syntax for object test, i.e. <e>attached {T} exp as u</e> instead of <e>{u: T} expr</e><br />
*syntax_updater: Syntax updater will convert the old syntax for object test to the new one, and will also perform some optimizations, such as transforming <e>{t: like x} x</e> into just <e>attached x as t</e>.<br />
<br />
===Improvements===<br />
*compiler: Supported object tests using the same object test local name in a single feature provided that their scopes do not conflict.<br />
*compiler: speed up parsing time in compiler that can provide about 3% speed up.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*runtime: Fixed bug#15280 and eweasel test#except034 that {EXCEPTION_MANAGER}.last_exception not cleared after successful retry if melted.<br />
*compiler: Correctly reported VEVI error for attributes initialized from a creation procedure by calling a once routine because the latter is not guaranteed to be executed on subsequent calls.<br />
*debugger: Fixed bug#15384: Debugger does not step at correct position (related to require else...)<br />
*debugger: now the debugger remembers correctly the breakpoint, even when recompiling from scratch.<br />
*compiler: Fixed some issues with non-conforming inheritance (bug#15224)<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.7062 (February 9th 2009)==<br />
===New features===<br />
* Eiffel2Java: void-safe, added void-safe example.<br />
* EiffelWeb: void-safe.<br />
<br />
===Improvements===<br />
*compiler: attached attribute initialization in creation procedures is now detected not only by inspecting the top-level instructions, but also the nested complex instructions with several possible execution paths, like conditional instruction, multi-branch, etc.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*testing: Fixed a bug where minimization of test was not done resulting in very large regression tests.<br />
*compiler: Fixed eweasel test#attach047 where type of array of string passed as argument to the creation procedure of the root class should have an attached actual argument type.<br />
*compiler: Fixed eweasel test#svalid018 where a crash occurred in `process_converted_expr_as' because we failed to verify that the expression still compiles fine even if inherited, because although it might compile fine in the ancestor, in the descendant it might not if they use a different set of options (e.g. non-void-safe in parent and void-safe in descendant).<br />
*eiffelweb: Fixed issue with `hexa_to_ascii' to make sure we process correctly even incorrectly encoded URL. Added `insert_pair_without_encoding' and `parse_urlencoded_input'. Fixed input_data to return an empty string and not to report an error and the content_length is empty as it is permitted to do so.<br />
*eiffelweb: Fixed issue bug#15267 by inheriting from SHARED_STDIN and SHARED_STDOUT to provide `stdin' and `output' in CGI_IN_AND_OUT.<br />
<br />
===User changes===<br />
*{{Red|base: Made several changes in EiffelBase so that the same version can be compiled in void-safe mode as well as in non-void safe mode. The code that might not be compile anymore is `create {CELL [SOME]}' because default_create is not a creation procedure anymore.}}<br />
<br />
===Developer changes===<br />
*studio: The Groups tool and Favorites tool are now based on ESF.<br />
*studio: Significant changes made in ESF tool foundations to further optimize startup and memory performance. Panels are no longer created unless the panel UI is actually needed.<br />
<br />
==6.4.7.6930 (February 2nd 2009)==<br />
===New features===<br />
*compiler: for enhanced backward compatibility with 6.3, estudio and ec/ecb have a new command line option `-compat' to launch EiffelStudio or the command line compiler with compilation settings compatible with those of 6.3. On Windows, you also have a new shortcut entry in the start menu for launching EiffelStudio in this compatibility mode.<br />
<br />
===Improvements===<br />
*compiler: Better explanation for VDPR(3) errors when two or more precursor are available by listing all the precursors.<br />
*compiler: Non-void arguments are now detected not only when they are specified in the voidness tests in immediate preconditions, but also in inherited ones.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed eweasel test#attach042 and test#attach043 where type of agent was incorrect when target was of type `like Current' or when the routine had no open arguments, in both cases the compiler generated detachable types when attached were expected.<br />
*compiler: Fixed some regressions eweasel test#fixed119 and test#incr318.<br />
*compiler: Fixed invalid precursor missed detection thus fixing eweasel test#valid117.<br />
*runtime: Fixed eweasel test#runtime011 were a memory corruption could occur when twining a SPECIAL or a TUPLE object under certain circumstances.<br />
*studio: Fixed a bug where editor will disappear when debugging.<br />
<br />
===User changes===<br />
*compiler: renamed VUPR errors to their ECMA name VDPR.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.6833 (January 26th 2009)==<br />
===New features===<br />
===Improvements===<br />
*wel: now void-safe<br />
*lex: now void-safe<br />
*encoding: now void-safe<br />
*process: now void-safe<br />
*time: added void-safe sample<br />
===Feature removed===<br />
===Bug fixes===<br />
*studio: Fixed bug#15253 where editor is missing from docking layout.<br />
*base: Fixed bug#15266 where we incorrectly merged the code value for {IO_EXCEPTION} and {RUNTIME_IO_EXCEPTION} thus breaking existing code not based on Eiffel exception object. (eweasel test#except035)<br />
*base: Fixed bug#15273 and eweasel test#except033 that an exception thrown through rescues caused infinite loop.<br />
*studio: Fixed the bug "Show disambiguated names" and "Show obsolete items" button on completion window did not function correctly and made tooltips on option buttons translatable.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.6747 (January 19th 2009)==<br />
===New features===<br />
===Improvements===<br />
*{{Red|base: Updated the IMMUTABLE_STRING classes to have an efficient string extraction query `shared_substring' which will let you create a substring of an existing immutable string without actually duplicating the data.}}<br />
*studio: Added option in the new library dialog to show only void-safe libraries, for void-safe projects.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed a bug with pre/post actions which were always executed regardless of the specified condition.<br />
*runtime: Fixed eweasel test#store020 where our recoverable store mechanism could not retrieve an object if it was generic and using a formal as actual generic parameter in a generic derivation using an expanded type. This is because in 6.2, we decided not to perform the instantiation of the attribute as it was not working properly when generic derivation is a generic expanded type. For the time being, if there is a mismatch where expected type is a FORMAL_TYPE, we try to instantiate it in the current processed type and if there is a match then we know it is ok, otherwise we reject the code. This also fixes bug#15256.<br />
*runtime: Fixed eweasel test#store019 where using the SED facilities to store/retrieve attributes which are attached would fail.<br />
<br />
===User changes===<br />
===Developer changes===<br />
<br />
==6.4.7.6645 (January 12th 2009)==<br />
===New features===<br />
*studio: Added compile_all, syntax_updater and Eiffel image embedder tool to the EiffelStudio delivery. They are located under $ISE_EIFFEL/tools/spec/$ISE_PLATFORM/bin.<br />
*editor: Added `flush' to force a full load of texts.<br />
===Improvements===<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed bug#15235 where some C compilers do not like that we generate a C array of size 0.<br />
*compiler: Fixed correctly location reporting of error classes, using the location where the code is written which differs from the current class being analyzed.<br />
*compiler: Fixed bug#15139 by checking when parts of a multi-branch conditional instruction even when the inspect expression does not type check (see test#valid228).<br />
*compiler: Fixed test#attach039 by using written class when evaluating precursor features as the current feature may be inherited.<br />
*compiler: Fixed bug#15144 by checking that a self-initializing attribute is not processed recursively (see test#term169).<br />
*compiler: Fixed bug#15129 by using a mixed routine-attribute table for attributes that may be self-initializing (see test#final072).<br />
*studio: Fixed issue bug#15222 to respected existing note clause tags and values.<br />
*finish_freezing: Fixed typo reported in bug#15239.<br />
*net: Move definition of FD_SETSIZE before using the Windows header files so that we can really listen on 256 descriptors (breaking change introduced in the IPv6 version which is now the official).<br />
===User changes===<br />
*studio: Added EIS built-in variable "ISE_DOC_UUID" with value of "http://doc.eiffel.com/isedoc/uuid".<br />
===Developer changes===<br />
<br />
==6.4.7.6592 (January 5th 2009)==<br />
===New features===<br />
===Improvements===<br />
*studio: Automatic class licenser now preserves all other note clause terms when replacing a license in the class text.<br />
===Feature removed===<br />
===Bug fixes===<br />
*studio: Fixed reporting of feature errors to report the correct class name when referring to parent class errors.<br />
*studio: Fixed EIS tool broken by either compiler changes or improper attachment usage.<br />
*studio: Fixed a library target compiled as an application target was not editable by EIS.<br />
*studio: Fixed a bug that note elements were not properly setup when recomputing configuration, which caused missing of some EIS entries.<br />
===User changes===<br />
*{{red|net: The IPv6 version of the EiffelNet library is now the official one. The old one has been moved in the obsolete cluster.}}<br />
*{{red|compiler: The compiler now accepts <e>attribute</e> and <e>note</e> as keyword by default.}}<br />
*{{red|argument parser: The argument parser library introduces some breaking changes in deferred feature signatures due to the conversion to Void-Safe.}}<br />
*studio: Added built-in EIS variable "ISE_DOC" with value of "http://doc.eiffel.com".<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.6402 (December 27th 2008)==<br />
===New features===<br />
===Improvements===<br />
*compiler: speed up degree 6 by not looking at the content of all .e files to figure out the associated class name. We now assume on the first pass that the file name is the class name. On EiffelStudio, if none of the file were buffered, we went from about 1 minute spent to just less than 3 seconds. The improvement should be even more when classes are on a remote drive.<br />
*studio: Set current line number as initial line number of the Go to line dialog. This fixed bug#15193.<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed missing detection of VRFT errors in cases like "<e>a: TUPLE [a: TUPLE [out: INTEGER]]</e>". Fixes eweasel test#exec293.<br />
*compiler: Fixed catcall checker crashing when enabled. Fixes eweasel test#term166.<br />
*runtime: Fixed eweasel test#exec293 where accessing labels of a Void tuple would not cause a call on Void target exception.<br />
*studio: Fixed a bug that shortcut preferences with `+'/`Numpad +' could not be modified.<br />
<br />
===User changes===<br />
*compiler: now the compiler does not produce the class progress output in batch mode. If you want the old behavior, you have to use -verbose option.<br />
<br />
===Developer changes===<br />
<br />
==6.4.7.6313 (December 22nd 2008)==<br />
===New features===<br />
*base: Added `same_keys' to HASH_TABLE. You can redefine this feature to use a different comparison criterion for the keys.<br />
<br />
===Improvements===<br />
*compiler: Improved implementation of ~ and expanded comparison to use `is_equal' directly rather than using `equal'.<br />
<br />
===Feature removed===<br />
===Bug fixes===<br />
*compiler: Fixed eweasel test#exec292 where type of inherited formals where incorrectly interpreted in descendants.<br />
*base: Fixed a bug that would not recognize a class name A_SOMETHING as a valid identifier for INTERNAL.<br />
*studio: New library dialog now correctly sorts the contents base on the library name and not the path.<br />
*studio: Fixed bug#15173: EiffelStudio crash when selecting library<br />
*runtime: Fixed eweasel test#runtime010 where certain allocation patterns could cause a major slow down during a garbage collection cycle.<br />
<br />
===User changes===<br />
*{{Red|base: We do not use <e>is_equal</e> in EiffelBase, but instead the ~ operator. This could break some of your code, especially with HASH_TABLE.}}<br />
<br />
===Developer changes===<br />
<br />
==6.4.76164 (December 15th 2008)==<br />
===New features===<br />
* studio: In-grid-item selection in Error List tool.<br />
* editor: Customizing some editor attributes, fonts, line height and etc., per instance.<br />
<br />
===Improvements===<br />
*studio: Tabulated format of copied selection from the Error List tool.<br />
===Feature removed===<br />
===Bug fixes===<br />
*studio: Fixed bug#14237 where some manipulations on the UI could corrupt the EiffelStudio docking layout.<br />
*studio: Fixed bug#12453 where VYCQ error would print the feature name in blue rather than in green.<br />
*studio: Added a protection for bug#15116 where we could still try to access `content' while EiffelStudio has already destroyed the panel.<br />
*studio: Fixed bug#15073 that Pick and drop from output window didn't work when no class tool was available.<br />
*compiler: Fixed eweasel test#multicon050 where compiler did not handle renaming of a routine with an alias into a routine without one as it still thought the alias was available.<br />
*compiler: Added printing of referenced configuration file in which there is a conflict. This fixes bug#15099.<br />
*compiler: Fixed an incorrect VUTA(2) error being reported when compiling a static access call in void-safe mode. This fixes eweasel test#valid223.<br />
*compiler: Fixed an incrementality corruption (bug#15061 and eweasel test#incr296) which would occur a feature has an invalid signature for one failed compilation before it is fixed again.<br />
*compiler: Fixed bug#15027 where if you have a class which was originally only in an override cluster and then keep it in the override cluster but also now in a normal cluster, then we would not remove the compiled information from the override cluster which would cause in a later compilation the class to be forcibly removed from the system even though it is still in use.<br />
<br />
===User changes===<br />
*{{Red|base: it is now using the new alias syntax for operators instead of obsolete syntax based on `infix/prefix' keywords. As a result some of your code may not compile.}}<br />
===Developer changes===</div>Paulb