GF 3.0
Krasimir Angelov, Björn Bringert, and Aarne Ranta
Beta release, 27 June 2008


GF Version 3.0 is a major revision of GF. The source language is a superset of the
language in 2.9, which means backward compatibility. But the target languages, the
compiler implementation, and the functionalities (e.g. the shell) have undergone
radical changes. 


==New features==

Here is a summary of the main novelties visible to the user:
- **Size**: the source code and the executable binary size have gone 
  down to about the half of 2.9.
- **Portability**: the new back end format PGF (Portable Grammar Format) is
  much simpler than the old GFC format, and therefore easier to port to new
  platforms.
- **Multilingual web page support**: as an example of portability, GF 3.0 provides a
  compiler from PGF to JavaScript. There are also JavaScript libraries for creating
  translators and syntax editors as client-side web applications.
- **Incremental parsing**: there is a possibility of word completion when
  input strings are sent to the parser.
- **Application programmer's interfaces**: both source-GF and PGF formats,
  the shell, and the compiler are accessible via high-level APIs.
- **Resource library version 1.4**: more coverage, more languages; some of
  the new GF language features are exploited.
- **Uniform character encoding**: UTF8 in generated files, user-definable in
  source files


==Non-supported features==

There are some features of GF 2.9 that will //not// work in the 3.0 beta release.
- Java Editor GUI: we now see the JavaScript editor as the main form of 
  syntax editing.
- Pre-module multi-file grammar format: the grammar format of GF before version 2.0 
  is still not yet supported.
- Context-free and EBNF input grammar formats.
- Probabilistic GF grammars.
- Some output formats: LBNF.
- Some GF shell commands: while the main ones will be supported with their familiar
  syntax and options, some old commands have not been included. The GF shell
  command ``help -changes`` gives the actual list.


Users who want to have these features are welcome to contact us, 
and even more welcome to contribute code that restores them!


==GF language extensions==

Operations for defining patterns.

Inheritance of overload groups.


