[comp.lang.ada] TeleSoft 1.4 compiler

spmcdona@bbn.com (Stephen McDonald) (03/17/90)

        We have just ported our project from TeleSoft's TeleGen2 Sun
Ada 1.3a host compiler to TeleSoft's TeleGen2 Sun Ada 1.4 host
compiler.  I say "ported" because the effort was non-trival, taking a
couple of days.  My main problems were:
        1. Incomplete Release Notes.  They don't tell you all the
things you need to know to use the new revision of the compiler.
        2. Stylistic changes that are not upwards compatible.  We use
the TeleSoft Ada bindings to SunView.  Not only has TeleSoft not
documented these changes they are often purely stylistic.  In one case
they merely changed the name of a function.

        The good news is the 1.4 compiler runs noticably faster.  I
don't have any figures but you will see the difference.  Also the Ada
interface to SunView seems to be better.  The program does not roll
over and die for no reason after doing something with the windows like
it used to.


Non-SunView Problems

        The definition of INTEGER changed (16 to 32 bits).  This was
not mentioned in the release notes (RN).  Code dealing with
protocols or datafiles could still compile but no longer work.

        The fact that long_integer no longer exists was not mentioned
in the release notes.

        The fact that there are now /bin and /lib subdirectories under
the TELEGEN2 directory might be somehow "cleaner" but it added no new
functionality and you have to change all of your liblst.alb files and 
your PATH.  (This was mentioned in the release notes.)

        Given
                package A is 
                        type meters_per_second is new float;
                end A;

                with A;
                package B is
                        speed : a.meters_per_second := -0.5;
                end B;
        This used to work with 1.3 but doesn't with 1.4.  It seems that
under 1.3 "-0.5" was converted to IEEE representation an then coerced
to a.meters_per_second.  Now "0.5" is converted to IEEE
representation and the compiler does not have a visible unary minus
function to apply to something of type a.meters_per_second.  This
was not mentioned in the release notes.  I'm not sure if either or
both 1.3 and 1.4 are compliant with the mil standard.

        I get dozens of warning messages that say:
                >>> WARNING: Call_DI_Shadow: death undefined
        Telesoft support assures me this this can be ignored.  (DI is
debug information.  It has something to do with when you are compiling
with the debug option while a variable is being kept in both a register
and someplace in memory and some part of the compiler is getting
confused.) 

Sunview Bindings Problems

        In window_inputs package, function event_id was changed to
event_action.  

        In windows package, under 1.4 there is a generic package
Event_proc_pkg.  Under 1.3 there was a generic function
Event_proc_handle.  Why is there now a package?  Both generics take a
formal parameter that accepts three arguments.  Under 1.3 the
arguments were an int, an event and a window.  Now there are a
window, an event and an int.  Is this supposed to be an improvement?

        In the panels package the callback stuff was changed much the
same way the callback in windows was changed.  There are now packages
instead of functions which appear to provide no new functionality but
require I change my source code.  Under 1.3 there was a generic
function notify_procedure_handle_button_or_text and now there are two
generic packages notify_procedure_pkg_button and
notify_procedure_pkg_text.  Also the arguments to the generic formal
parameter were an event and a panel_item and they are now a
panel_item and an event.

                                                Steve McDonald
                                                spmcdonald@bbn.com

Disclaimer: No disclaimer needed - I speak for all lifeforms on Earth.
Note To Extraterrestrials:  Planetary law requires that you contact me
        whenever you enter or leave the solar system.  Planetary law
        also requires that if you wish to conduct field observations
        I must first inspect your spacecraft.  No exceptions!