SmallEiffel -0.85 with Java bytecode

Dominique Colnet <Dominique.Colnet@loria.fr>
4 Jul 1997 14:58:10 -0400

          From comp.compilers

Related articles
SmallEiffel -0.85 with Java bytecode Dominique.Colnet@loria.fr (Dominique Colnet) (1997-07-04)
| List of all articles for this month |

From: Dominique Colnet <Dominique.Colnet@loria.fr>
Newsgroups: comp.lang.eiffel,comp.lang.java.softwaretools,comp.compilers
Date: 4 Jul 1997 14:58:10 -0400
Organization: CRIN & INRIA-Lorraine - Nancy - FRANCE
Keywords: Java, Eiffel, available

The long-awaited version -0.85 of SmallEiffel is NOW AVAILABLE !!
It includes the FIRST EIFFEL TO JAVA BYTECODE COMPILER that you
can download for FREE.
The Eiffel to C compiler has also been improved.


The new release -0.85 of SmallEiffel is available at:


      ftp://ftp.loria.fr/pub/loria/genielog/SmallEiffel


Mirrors sites should automatically be updated within 24h :
      Australia ftp://ftp.progsoc.uts.edu.au/pub/Eiffel/SmallEiffel/
      Austria http://gd.tuwien.ac.at/pub/languages/SmallEiffel/
      USA ftp://ftp.cs.rit.edu/pub/mirrors/SmallEiffel/


--


The greatest news is that release -0.85 includes the new
command `compile_to_jvm' for beta test.


This new command is an Eiffel to Java bytecode compiler.
Thus, using SmallEiffel, you can produce both C code or Java
bytecode using exactly the same Eiffel source code.


The new command `compile_to_jvm' has reached the beta test level:
it passes a large number of tests (90% of our data base of tests).
Remaining unhandled tests concern the BIT type
and some user`s expanded usage.


This release has been tested under various Unix platforms (PC,
HP-UX, DEC and Sun). The Java Virtual Machine used is the one
of the latest Sun JDK 1.1.2.


For this first release, our goal was not to produce the
fastest Java bytecode, but to show that quick Eiffel
to Java bytecode translation is possible.
Indeed, compared with gcc -O6, the actual generated
bytecode is about 20 times slower (when interpreted, ie using
the Sun JDK "java" command) than corresponding C code (compiled
with gcc -O6).
Many optimizations which are already done for C code are
not yet implemented for the Java bytecode :
    - routine calls are never inlined in Java bytecode,
    - once routines are never pre-computed in Java bytecode,
    - boolean expressions of conditional instructions are not
    optimized,
    - dynamic dispatch is sequential in the actual Java
    bytecode (vs. a binary branch code for C),
    - ....


All previous optimizations are to be done in the -0.84 release.
We think that the factor 5 will be easily reachable.
Another work in progress for next release (-0.84) is to provide
a smooth interface with Java libraries.
The goal is to be able to write applets in Eiffel, to call Java
from Eiffel and Eiffel from Java ...


--


Extract from SmallEiffel/misc/HISTORY file :


- Release - 0.85 - Thursday July 3 1997
    * First beta-release of commands `compile_to_jvm' and `print_jvm_class' !
    * The new name for class C_ARRAY is now NATIVE_ARRAY (because it works
    both with Java and C). The old C_ARRAY name is temporarily accepted with
    a warning from the compiler.
    * For readability and to avoid confusion with Java names, external tags have
    changed (see for new names in man/external.hlp). Old names are temporarily
    accepted with a warning giving the new name to use.
    * Added feature `to_hexadecimal' and feature `to_hexadecimal_in' in class
    CHARACTER.
    * Feature `io', `std_input', `std_output' and `std_error' of class GENERAL
    are no longer frozen.
    * Some changes in STD_FILE_READ for features `read_integer', `read_double'
    and `read_real' (added comments, precondition and solved the problem with
    the trailing separator).
    * Feature `die_with_code' of GENERAL now accepts any INTEGER code (not just
    predefined `exit_success_code' and `exit_failure_code').
    * Fixed a bug in STRING. The following expression is now true:
    ("a%/0/b").count = 3
    Just try this on your favorite Eiffel compiler ;-)
    * Many changes in basic input/output in order to be compatible with Java:
    No more class STD_FILE (the name is now free for an ELKS implementation).
    Two new classes: INPUT_STREAM and OUTPUT_STREAM.
    * Feature `unread_character' of class INPUT_STREAM is now implemented in
    Eiffel.
    * Added OUTPUT_STREAM.put_pointer to view a POINTER.




--


Please note I'll be travelling next week, so I won`t be able to check the news
or e-mails. I'll be back on July, 14.


------------------------------------------------------------
Dominique COLNET -- Talk Eiffel with SmallEiffel Talk Eiffel
C.R.I.N. (Centre de Recherche en Informatique de Nancy)
POST: CRIN,BP 239,54506 Vandoeuvre les Nancy Cedex,FRANCE
EMAIL: colnet@loria.fr VOICE:+33 0383593079 FAX:+33 0383413079
--


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.