# 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.