What's new in EiffelStudio 5.4
		Graphical environment
		Improvements
		
          - Added support for mouse wheel in editor and associated 
          parameterization in preferences.
 
          - Cluster tree is not collapsed anymore between compilation.
 
          - All callers will not show empty entries.
 
        
		Bug fixes
		
          - Fixed issue where setting the string background color to `auto' in 
          the preferences will set it to a black color next time your relaunch 
          EiffelStudio.
 
          - Fixed issue where typing in an empty features tree will close down 
          EiffelStudio.
 
          - Fixed issue with BON diagram where expanded client links were not 
          properly displayed (the expanded bar was drawn on top of classes 
          instead of on the link itself).
 
        
		Debugger
        Improvements
        
          - Ability to debug .NET applications from EiffelStudio. It behaves like 
        the traditional debugger except with the current limitations:
            - no conditional breakpoints
 
            - no expression evaluation
 
            - no expansion to see attributes of non-Eiffel objects
 
          
           
        
        Bug fixes
        
          - Fixed issue on Unix platforms where passing more than 5 arguments 
          will disable debugging and ultimately crash the environment.
 
        
		EiffelBuild
        
          - Click 
          here for EiffelBuild release notes.
 
        
		Compiler
        
          - Click
          here 
          for the compiler release notes.
 
        
		Libraries
        Eiffel2Java
        
          - Fixed incorrect memory freeing in get_string in JNI_ENVIRONMENT 
          that could cause some memory corruption.
 
          - Fixed VDRD error in method_id from JAVA_OBJECT.
 
        
        EiffelBase
        
          - Optimized i_th from PRIMES for 
          the first 200 prime numbers.
 
          - Fixed bug in generic_typecode from TUPLE in .NET implementation 
          which fixed an issue with is_reference_item.
 
          - Made TUPLE a descendant of HASHABLE 
          and defined hash_code (based on the hash_codes of the 
          elements of a TUPLE).
 
          - Added default_create as creation procedure of 
          TUPLE and made make
          obsolete.
 
          - Added convenience features to TUPLE: put_XX_item where `XX' can be 
          replaced by `character, boolean, integer, double,...'.
 
          - Optimized ROUTINE, PROCEDURE and FUNCTION 
          implementation to speed up agent calls by a factor of 2 to 3. Removed 
          open_operand_type from ROUTINE as its specification was only used 
          internally and specification was not precise enough to be used by 
          clients of ROUTINE.
 
          - Fixed append from SEQUENCE to not perform a
          deep_clone when passed 
          argument is the same reference as Current. This was a problem when the 
          base class of the type of the elements inherited from MEMORY and 
          redefined dispose. You could possibly end up freeing twice an external 
          resource.
 
          - Changed implementation of INTERACTIVE_LIST to be based on 
          ARRAYED_LIST rather than on LINKED_LIST.
 
          - Added efficient implementation of append in ARRAYED_LIST.
 
          - Fixed bug in multithreaded mode when you open in two different 
          threads a different file with a different mode. For example one is in 
          read mode, the other one is in write mode. If the operation happens at 
          the same time, you could end up with two files open in read mode or 
          two files open in write mode, which is not the expected behavior.
 
        
        EiffelNet
        
          - Fixed bug in set_delay and set_nodelay
           in NETWORK_STREAM_SOCKET, because their implementations were inverted.
 
          - Fixed incorrect spelling of 
          maximum_seg_size in NETWORK_STREAM_SOCKET.
 
          - Added recoverable storable to EiffelNet (was not included in 
          previous version although recoverable storable was available for 
          files).
 
          - Fixed SMTP_PROTOCOL to follow more closely SMTP RFCs.
 
          - Added support for multi-line error codes in SMTP_PROTOCOL.
 
        
        EiffelTime
        
          - Improved speed of DATE and TIME comparison.
 
          - In DATE_VALUE added 
          ordered_compact_date and made compact_date 
          obsolete.
 
          - In DATE added make_by_ordered_compact_date and 
          made
          make_by_compact_date obsolete.
 
          - In DATE_VALIDITY_CHECKER added ordered_compact_date_valid.
 
          - Fixed C_DATE to bufferize the current time rather than querying it 
          for each of the time components. Not doing that was causing a bug in 
          DATE, DATE_TIME and TIME where if the computation was done on December 
          31st at 23:59:59 2003, we could end up with a date of January 1st 
          2003, therefore being one year off. This is a breaking change from 
          before and  if you are using C_DATE, use update 
          before each call to the *_now queries if 
          you expected to reflect the time at the time of the query.
 
        
        EiffelThread
        
          - Added support for .NET
 
          - Made OBJECT_OWNER obsolete
 
          - Added wait_with_timeout in CONDITION_VARIABLE
 
          - Added READ_WRITE_LOCK class to be used 
          in a system where few writes are done compare to reads. A typical 
          example of its use would be to have a thread safe lookup table where 
          few insertions are done.
 
          - Now a C externals that might block the execution of a system, 
          should be marked `blocking'.
          
          See compiler changes for more details.
 
        
        EiffelVision2
        
        EiffelWeb
        
          - Fixed issue when sending exception trace to browser. On most 
          servers you were getting an internal error rather than the exception 
          trace.
 
          - Fixed issue with cookies from CGI_ENVIRONMENT as keys were stored 
          as items, now the keys are stored as keys, items as items.
 
        
        WEL
        
          - Renamed convert from CONVERTER class into
           extract_definition.
 
          - Renamed convert from 
          WEL_FONT_FAMILY_ENUMERATOR class into update_current.
 
			- In WEL_TREE_VIEW, calling deselect_item will now really deselect the item, whereas previously, it only caused the item to be redrawn without selection.
 
			- In WEL_REGISTRY, open_value_key will now accept an empty 
            string so that the default key value can be read.
 
			- Fixed issue with dword_value in WEL_REGISTRY_KEY_VALUE 
            which returned incorrect values.
 
			- Made make in WEL_REGISTRY_KEY_VALUE accepts 
            only string values, if you want to create a new instance with a 
            value of a different type you need to use the new creation 
            procedure make_with_value.
 
        
        .NET libraries
        
          - Renamed THREAD and MUTEX into SYSTEM_THREAD and SYSTEM_MUTEX to 
          avoid name conflicts with EiffelThread.
 
        
         
        Click here to check out what was new in previous 
        versions.