Subject: Announcement: ASF+SDF Meta-Environment 1.5
From: Jurgen Vinju <[email-masked]>
To: [email-masked]
Date: Mon, 10 May 2004 14:57:54 +0200

We   are   pleased   to   announce   the  following  release:  
                        ASF+SDF Meta-Environment 1.5

   This  release  contains  many  radical improvements of many aspects of
   ASF,  SDF  and  the Meta-Environment. There are new features, some old
   features  have  been  replaced by new features, and some features have
   become deprecated without replacement.

   Old  ASF+SDF  specifications  can  be upgraded automatically using the
   Upgrade  menus  in the environment. Detailed comments on the important
   changes can be found below at NEWS. You are advised to read them.

   We  would  like  to  thank  you for your valuable feedback on previous
   versions, especially the Beta testers of release 1.5.

   Have fun!

   The Meta-Environment development team.

   http://www.cwi.nl/projects/MetaEnv

   Contents of this announcement
     * REQUIRENTS
     * DOWNLOAD AND INSTALLATION
     * PROVIDING FEEDBACK
     * NEWS
          + Changes in the Meta-Environment
          + Changes in SDF
          + Changes in ASF

   REQUIREMENTS

   Installing the system requires the following software pre-installed on
   your system, and available in your PATH:

     * GNU make
     * GCC
     * Java 1.4.2 SDK
     * GNU Emacs (compiled for X11) or GVIM (with server-support)
     * AT&T graphviz (version 1.5 or higher)

   See www.gnu.org, www.vim.org, www.sun.com and www.graphviz.org.

   NOTE: XEmacs is not supported anymore

   DOWNLOAD AND INSTALLATION

   An    integrated    source    bundle    can    be   downloaded   from:
   http://www.cwi.nl/projects/MetaEnv/bundles/asfsdf-meta-distribution-1.
   5.tar.gz

   First  make  sure  the required software is installed and available in
   your PATH.

   The  following  commands  will  compile  the  system and install it in
   /opt/asfsdf-meta15:

$ gunzip -c asfsdf-meta-distribution-1.5.tar.gz | tar xvf -
$ cd asfsdf-meta-distribution-1.5
$ ./configure --prefix=/opt/asfsdf-meta15
$ make

   PROVIDING FEEDBACK

   Feedback     can     be    submitted    directly    using    Bugzilla:
   http://www.cwi.nl/projects/MetaEnv/bugs

   Or send us an email: [email-masked]

   Please address questions to: [email-masked]

   NEWS

*** Changes in the Environment
     * The   memory   footprint   of   the   environment   has  decreased
       significantly!

     * IMPORTANT:  in  the  term  editors  the  following  disambiguation
       heuristics have been TURNED OFF:
          + injection counting
          + prefer/avoid counting

     * The  rationale is that these disambiguations silently disambiguate
       and therefore hide important problems of a syntax definition. They
       might  also disambiguate in a 'context-sensitive' manner; choosing
       one  alternative  in  some  context,  and  another  in a different
       context.  Several  examples  of  these  effects  have  lead to the
       decision  of  turning  them  off. Notice that these heuristics are
       still  online  while  parsing ASF or SDF. This will be remedied in
       future  releases.  Please  contact  us  if you are stuck with this
       decision,  we  can  help  you.  The new behavior in the editors is
       mimicked  on  the commandline by providing the -fi and -fe options
       to sglr:

       $ sglr -fi -fe -i <input> -o <output>

       So,  the  standard  behaviour  of  sglr on the commandline has NOT
       changed.

     * The  XEmacs  editors  have  been  replaced  by  GNU  Emacs for X11
       editors,  or  GVIM  editors.  GNU  Emacs  is standard, GVIM can be
       activated  using  a  commandline option of the 'meta' command. See
       'meta -h' for help.

     * Editors  are  faster  and  more stable. Suddenly killing an editor
       does  not  crash  the  environment  anymore. of the GUI. There are
       three types of feedback:
          + Warnings  and errors in the "Error" tab. Example: "undeclared
            variable"
          + System  information  and  errors  in the "Info" tab. Example:
            "file not found".
          + Status  log  indicating  what the environment has done in the
            "Log" tab. These are copies of all message to the status bar.
            Example: "Opening module X" and "Done"

     * Messages  of  type  1. dissappear automatically when the source of
       the  error has been removed AND only after the source is rechecked
       for  errors.  Messages of type 2. and 3. message do not dissappear
       automatically.  The  "Clear History" button clears all messages in
       both tabs.

     * All  errors  and  warnings  in  the  "Error" tab are clickable. An
       editor  will  be  opened and the cursor will jump to the source of
       the error or the warning.

     * TIP:  if  many  warnings  are produced about the use of deprecated
       functionality,  consider using the automatic Upgrade functionality
       in  ASF  and  SDF  editors. The Upgrade tools should be used as an
       editing  assistent,  blindly  applying  them without reviewing the
       changes is possible (the changes are all semantics preserving) but
       not necessarily the best plan. You might find undiscovered bugs in
       your  specifications. Do not simply ignore warnings, they indicate
       serious problems in your definitions in 90% of the cases.

     * The parse tree viewer has been extended. Next to the graph display
       a  "nested  boxes" visualization has been added. "View Tree" shows
       the  parse  tree  without  the characters at the leafs and without
       layout nodes. "View Full Tree" shows all nodes and leafs.

     * The removal of redundant static checking has lead to a significant
       speed-up for generating parse-tables and parsing equations for big
       specifications.

     * Bugs  related  to  loading  big specifications are solved. Several
       tools  contained  minor  but  nasty  pointer dereference bugs that
       break the ATerm garbage collector.

     * A heuristics based pretty printer has been added called "Pandora".
       Use  the  Pretty  Print  option  of the Actions menu in an editor.
       NOTE:  the  UNDO  in  an  editor does not bring you back to before
       running  the  pretty  printer. User-defined pretty-printing is not
       supported fully yet, but the basic foundations are there.

     * The  layout  of the GUI has changed, many menus have been added or
       removed  or  changed.  The  goal  was to improve modularity of the
       Java/Swing  source,  but  several user-interface improvements have
       been made to.

     * For each choice in the Export menu a file browser is started for
       selecting the target file.

     * You  can  safe  the state of the environment in a file (termstore)
       and  later  return  to  that  state  by  loading  the  same  file.
       Exception:  all  files on disk must not change w.r.t. to the saved
       state.  If  files are changed on disk, and old 'termstore' will be
       updated with the new files automatically. This updating with  
       respect to the filesystem is obligatory. Use the caching feature
       to quickly start up where you left off earlier.

     * Modules  with  circular  imports  can  be  closed now (if no other
       modules depend on them than the modules in the import cycle).

*** Changes in the SDF formalism and its implementation

     * Declaring  sorts  is  obliged  for  all simple sorts now. The sort
       declarations  are  used  for (and only for) checking typos in sort
       names.

     * Declaring  sorts is forbidden for complex symbols (such as tuples,
       lists and optionals).

     * A   hidden  declaration  is  now  really  hidden,  just  like  the
       productions  in  a  hidden  section.  Before the sdf checker would
       assume  a sort that was declared hidden was still declared outside
       of the module.

     * Sort  declarations  do  not  make a sort a 'start symbol' anymore.
       Before,  all  symbols  in  the sort declaration were automatically
       promoted  to start symbols. This lead to unexpected ambiguities in
       a  number of cases and to vague warnings and error messages by the
       SDF  checker.  A sort declaration is now a separate concept from a
       start  symbol. Sort declaration declare which sort names are going
       to   be   used  in  a  grammar,  start  symbols  declare  the  top
       non-terminals of a grammar.

     * A  new  grammar  type: 'context-free start-symbols' can be used to
       declare   a  start  symbol.  Example:  context-free  start-symbols
       Compilation-unit

     * The  Upgrade menu automatically promotes all sorts to context-free
       start-symbols.  Usually  you  can remove a number of start-symbols
       after  that.  NOTE:  a  parse  error  at  the  beginning of a file
       probably  means  that  you  forgot  to  introduce  a  context-free
       start-symbol.  Use  the Upgrade menu in a syntax editor to promote
       all  sorts to start-symbols (a transformation that mimicks the old
       semantics of the module, all sorts are start-symbols.)

     * Several more static checks of SDF specifications have been added.

     * Unquoted  literals  are deprecated. A warning will be printed. Use
       the Upgrade menu to automatically quote all unquoted literals.

     * Tuple syntax A#B is replaced by (Upgrade menu)

     * Set and Permutation symbols have been removed.

     * Restore-brackets tool has been improved.

     * {reject}  on  a  language  bigger  than  a literal triggered a bug
       sometimes. This was fixed.

     * Cycles are reported better by sglr and a bug concerning cycles has
       been solved.

*** Changes in the ASF formalism and its implementation

     * Conditions:  The  "="  sign  in  conditions is deprecated. The new
       conditions can be:
         1. "==" for equality tests,
         2. "!=" for inequality tests,
         3. ":="  for  matching a term on the right onto a pattern on the
            left,
         4. "!:="  for  matching,  failing if the match succeeds and vice
            versa.

     * The  new  condition  operators replace the "=" sign, allowing more
       static checking of the conditions for uninitialized variables etc.
       Static checks are now the following:
         1. For "==" and "!=" both sides may not introduce new variables.
         2. For  ":="  and  "!:="  the  right-hand side may not introduce
            variables.  The  left-hand  side  MUST introduce at least one
            variable.
         3. Variables  introduced  by  "!:=" can not be used by following
            condition or the right-hand side of a rule.
     * NOTICE: the Upgrade menu of an ASF editor automatically translates
       all "=" conditions to ":=" or "==" conditions.

     * New  unit  testing  feature : Integrated ASF unit tests are a tool
       for:
          + Documenting the behaviour of a specification.
          + Debugging specifications
          + Regression testing specifications
     * An  ASF  file  is  now  a list of sections. A section is either an
       old-style  equations section (with the "equations" keyword"), or a
       tests   section  (with  the  "tests"  keyword).  See  for  example
       basic/Integers  in  the  library.  Tests  can  be  conditional, or
       unconditional and have almost the same syntax as equations, except
       that the "=" sign is replaced by a "==" or a "!=":

  [tag] lhs == rhs   or   [tag] lhs != rhs or

  [tag] conditions   or   [tag] conditions
        ==========              ==========
        lhs == rhs              lhs != rhs

     * A  tests  is run by first evaluating the conditions, then reducing
       the  lhs  and the rhs and then checking equality. All failed tests
       are reported in the environment.

     * Static checks of the tests ensure that:
          + The lhs and rhs do not introduce new variables
          + The  conditions  are  checked  in  the  same  manner  as  the
            conditions in the equations.

     * Rewriting with annotations is supported by both the interpreter as
       the compiler. This means that you can extract position information
       about  a  term during rewriting. See the utilities/PosInfo library
       module.

     * All builtins are now supported by compiled specifications.

     * Several  builtins  have  been  added  for parsing and file IO. See
       utilities/Parsing and utilities/Files.

     * The   result  of  a  builtin  call  is  always  normalized  before
       continuing.

     * Memoization  in  compiled specification using the {memo} attribute
       works.

     * The  ASF  library  has  been restructured and several modules have
       been added extended or fixed.

     * labels  and  cons  attributes  are  not interpreted by ASF anymore
       (this was hidden functionality). Instead a specification generator
       generates  several  onvenience  functions  from  an SDF definition
       using  labels  and cons attributes. he tool is called ASFSDFApigen
       and  is  available from the Tools menu in the module popup. Try to
       generate an API for basic/Booleans for example. This will generate
       a new module with all kinds of ready-to-use functions.

     * The  order  in  which  rules  are  tried  by the interpreter and a
       compiled specification is equal now.

     * Compiled  specification  can  deal  with  deeper  and more complex
       nesting  patterns.  A  bug in the generated code sometimes lead to
       problems for these kinds of patterns.

     * Unused  variables  in  the  generated C code that the ASF compiler
       produces have been removed.
-- 
http://www.cwi.nl/~jurgenv