lotus

previous page: C14.1) New features in version 5.3 of the Compiler
  
page up: BETA Programming Language FAQ
  
next page: C14.3) New features in version 5.1 of the Compiler

C14.2) New features in version 5.2 of the Compiler




Description

This article is from the FAQ, by with numerous contributions by others.

C14.2) New features in version 5.2 of the Compiler

The following new features have been implemented in version 5.2 of the
compiler, compared to version 5.1.

New Platforms
Much effort has been put into porting the compiler onto new platforms:
o A final version for Silicon Graphics MIPS is now available.
o The Linux compiler now generates binary code directly.
o Work is ongoing to make a binary compiler for Windows NT and
Windows 95.
o Work is ongoing to make native binary code generation for PowerPC
based Macintoshes.
This work has caused a lot of changes to the interior of the compiler
and runtime system. These changes should, however, be transparent to
the user.

## now allowed for objects as well as for patterns
You may now use P## as an alternative to P.struc when P is an object.
Previously ## was only allowed for patterns.

$CC set in UNIX job files
The job files on UNIX platforms now set the CC environment variable to
a reasonable default value before executing the MAKE commands. Thus
$(CC) may now be used in the make files on UNIX platforms.

Check for bound SLOTs
The compiler will now only attempt to link if a PROGRAM slot has been
found in the dependency graph (this feature was introduced in v5.1 of
the compiler, but the implementation was buggy). If SLOTs of category
dopart or descriptor in the dependency graph are not bound, and linking
would otherwise have happened, the compiler now issues a warning and
does not attempt to link. This is the kind of situation that could give
an "Undefined Reference" error at link time in v5.1 (and earlier
versions) of the compiler.

Likewise, if two or more fragments try to bind the same SLOT, the
compiler will give a warning. This is the kind of situation which could
give an "Multiply Defined Symbol" error at link time in v5.1 (and
earlier versions) of the compiler.

Interfragment leave/restart
Added support for interfragment leave/restart as in

     foo.bet:
        ORIGIN '~beta/basiclib/v1.5/betaenv';
        BODY 'foobody';
        --PROGRAM:descriptor---
        (# do L: <<SLOT LL:descriptor>> #)
 
     foobody.bet:
        ORIGIN 'foo';
        --LL:descriptor--
        (# do leave L #)

This feature did not work in previous versions of the compiler.

Generalized special characters in string literals
The following special characters are now allowed in BETA string
literals (some of them, e.g. \t, has worked in previous versions, too):

      \a  alert (bell) character
      \b  backspace
      \f  form feed
      \n  newline
      \r  carriage return
      \t  horizontal tab
      \v  vertical tab
      \\  backslash
      \?  question mark
      \'  single quote
      \"  double quote
      \ooooctal number

The \ooo form can be shortened to \o or \oo, provided that the
character immediately following it is not a digit.

Note that the backslash character is now an escape sequence which must
itself be escaped if used literally. Thus, one must now write '\\'
instead of the old-style '\'.

Note that you may now use \' as an alternative to the old-style '' for
including literal quotes in a string. Thus, 'Tom\'s Cottage' produces
the same result as 'Tom''s Cottage'.

 

Continue to:













TOP
previous page: C14.1) New features in version 5.3 of the Compiler
  
page up: BETA Programming Language FAQ
  
next page: C14.3) New features in version 5.1 of the Compiler