Eiffel Wish List

by Administrator (modified: 2015 Aug 20)

Compiler:General
Wish Short Description
Source & Generated Files in an RDBMS and (optionally) Compile directly from database Use an RDBMS to store all sources,libraries and generated files instead of a filesystem. Optionally directly compile from the database. Repository can be shared amongst multiple users
Shared EIFGEN Allow sharing of EIFGENs (in read-only mode)
On-demand tab loading Allow creation of an EV_NOTEBOOK tab with an agent to be called to fill the tab when it is first loaded
Enum A way to author Enum-like class for typed options or flags. Currently using INTEGER and a bag of analogous constants doesn't make Eiffel "elegant".
Decimal Addition of a decimal type / REAL_128 for 28 digit precision -
User types I want to be able to define types .e.g. a decimal type as mentioned above. I know all built in types can be defined from scratch, except I a way to initialise from literals. So we need a way to define them as well. Suggest a new defered class with create methods from_literal( s:STRING), and queries is_interger_ok:BOOLIAN, is_real_ok:BOOLIAN, is_arbitary_string_ok:BOOLIAN, is_type_string_ok:BOOLIAN (we would define a new type of string just for this). The compiler when generating optimised code will have to compile the new types and dynamicaly bind to them to create an object that can be embeded into the code. I beleave this would let us write code like: x:DECIMAL; x=1.23 (without a conversion from REAL (float base2))
CHARACTER_16 CHARACTER_16 type
7-bit ASCII ASCII 7-bit (US) ASCII_CHARACTER and ASCII_STRING which extends upon an ARRAY [ASCII_CHARACTER] with values of 0-127, removing the need for UTF8 conversion/checking when passing basic char values to C (gtk interfacing for example when connecting to signals)
MUTEX Make MUTEX recursive on non-windows platforms or at least provide a mutex and separate recursive mutex for all platforms.
Multiple Precompiled Ability for multiple precompiles in a system.
XXX Ability to compile/debug for both 32/64 bit systems via project settings.
XXX Ability for a fully optimal finalization for systems marked as 'client only', so that unused variables will not get generated in the finalized C Code.
XXX Ability for Eiffel Studio to cross compile.
XXX Ability to be able to control all user settable options in studio without having to resort to manually editing files, this is mainly for C compilation options.
XXX Have a smarter C code generation system that can launch a C compilation of any module as soon as the C code is generated, this way we can also be smarter when monitoring C compilation progress.
XXX Ability for ANY to generate a unique id for each object for referencing and hashability.
XXX With hashable ability of ANY, change object graph traversal for serialization so that multiple threads can serialize at the same time without having to wait linearly (lock_marking/unlock_marking). This may also require a reworking of the mismatch corrector facility as this does not appear to be thread-safe when magically called by the run-time.
XXX Ability for Studio to work and compile with Cygwin
XXX Ability to get a list of file dependencies in the form of a file listing to stdout. This list would contain a) all .e files used in the system, b) all .lib/.so files explicitly listed in the ECF/Ace file and c) all .h files referenced in external features (ideally that have not been subjected to dead code removal). Preferably, this feature should be able to be used without performing a full compilation (level 4?).
XXX Ability for ANY to generate a unique id for each object for referencing and hashability.
XXX Ability for ANY to generate a unique id for each object for referencing and hashability.
Make `redefine' ECMA conform According ECMA 367 8.10.7 (Effect, effecting), The `redefine' clause cannot be used to effect a inherited deferred feature. This code should be rejected:
deferred class A feature
 
    do_something
        deferred end
 
end
 
class B inherit
    A
        redefine
            do_something
        end
 
feature
 
        do_something
            deferred end
 
end