Future Work |

The Gobo Eiffel Compiler can be extended in many ways. Here is a non-exhaustive list of possible enhancements and future developments.

## Improve C code generation

The names of the generated C functions should not depend on type and feature ids in order to make it possible to play with DLLs and other shared libraries. It will also make the incrementality of C compilation easier to implement (taking advantage of the Zig toolchain caching mechanism). The class `ET_C_GENERATOR` has been written in such a way that it should not be that difficult to change the naming convention. You can have a look at the callers of feature `short_names` as a starting point.

One way to improve C compilation time could be to try to use distcc. It seems to work well when applied to the C code generated by ISE.

Note that no effort has been made yet to optimize the generated C code.

## Debugger

Add debugging facilities.

## Profiling

Add profiling facilities.

## Incrementality

Some effort should be spent on finding ways to make the Eiffel to C compilation incremental. Currently the code allows some incrementality if the subsequent recompilations are performed within the same compiler execution. The data needed for incrementality are lost as soon as the program exists.

## Validation Test Suite

Several kinds of validation test suite are needed. One to test interoperability with ISE Eiffel. Another one to test compliance with the ECMA Eiffel standard. It would also be useful to have a test suite for FreeELKS kernel library. This effort has already been started with gecop and its validation test suite.

## Intermediate Languages

gec currently generates C code. This is done through the class `ET_C_GENERATOR`. gec could be extended to generate Java Virtual Machine (JVM) code, Microsoft .NET code (MSIL), Rust, Zig, Wasm, C--, or even native code.

## IDE

A graphical development environment for gec should be provided. One solution could be to implement a plugin for VSCode.