Version history

From Dyna
Jump to: navigation, search


Next version

The version currently in the works involves a complete redesign and reimplementation. The new Dyna language will be cleaner and more powerful. Initial releases may be slower than 0.3, since we are dealing with correctness first and efficiency second. However, the new version will ultimately be faster, mainly because of new declarations that affect memory layout and update strategy.

Version 0.3

Version 0.3 is an alpha version. Development on this branch has basically ceased, but it is the one to use.

Patchlevel 0.3.1 of July 2004 was the first public release and was used for the ACL 2004 demo. Partial listing of changes since 0.2:

  • Dyna Language
    • various improvements and tweaks to the Dyna language definition
    • declaration inference
  • C++ interface
    • various improvements and tweaks to the C++ interfaces
    • more solid type system, including union types and casting
    • support for query iterators
    • redesigned weight types
  • Implementation
    • completely rewritten dynac compiler
    • garbage collection
    • some speedups
    • native parsing for both Dyna programs and terms in user-written programs (Prolog is no longer needed)
    • improved packaging
    • some attention to portability
  • Related packages
    • revisions to DynaMITE to make it work more closely with the chart
    • first version of documentation (wiki)
    • first version of visual debugger (not part of the release)

Patchlevel history

  • 0.3.9 (date?)
    • please document what the changes were
  • 0.3.8 (date?)
    • dynac requires an explicit --driver option to produce a.out
    • --driver=interactive no longer crashes
    • Early version of visual debugger is part of the release
    • ...
  • 0.3.7 (2005-04-20)
    • new dynac version uses Makefiles behind the scenes, making recompilation of dyna programs faster
    • axioms can now be embedded in the dyna program (example: word("Mary",2..3) := 1.0.). No need to assert simple axioms in the C++ driver anymore (in fact, no need to write a C++ driver at all, see next item)
    • dynac now auto-generates and compiles a generic C++ driver program. A simple dynac hello_world.dyna results in an executable a.out. The generated C++ driver can be modified by the user. Several standard driver programs are available, e.g. one that prints debug information during the build, one that prints a formatted backtrace of the goal etc
    • more error messages for bad user input
    • error messages now show the linenumber in the original dyna file, not a generated file in the pipeline
    • dynac now includes common subexpression elimination, a program transformation that detects right-hand sides that are (completely or partially) similar and summarizes them, making the program more efficient
    • new functions for retrieving best parse/path etc: get_best_antecedent, has_best_antecedent (see Chart object)
    • the new dyna preprocessor (dpp) handles included files correctly. Macros defined on the command line with -D are now passed to the dyna program as well as to the C++ driver program
    • use -inf instead of neg_inf
  • 0.3.6 (2004-12-29)
    • explicit garbage collection of terms, and some facilities for advanced users to control it
    • completed support for user-defined operators, by implementing the cname and the operator declarations. See test/operators/cky_with_declared_operators/cky.dyna for an example.
    • implemented foreign functions, see test/userfunctions/squaredtest/ for an example
    • added operator >> for the chart. It reads in terms, with at most one term per line
    • log(n), inf, +inf, and -inf are now supported as axiom weights (as read by fassert() and sassert()), as well as some other previously unsupported number formats
    • the distribution now contains more and better demo programs in the demos/ directory
    • RPMs for Linux are now available
    • fixed type inference bug that occurred for underscore variables (multiple _ variables are now internally represented as _(1), _(2), etc.)
    • added workaround for the yytext_ptr undeclared problem that some flex versions had with the scanner code
  • 0.3.5 (2004-10-27)
    • cygwin compilation now works
    • infix operators like /, \, and -> work
    • list syntax with [X|Y] is now equivalent to cons(X,Y)
    • fixed overflow error that occurred when large grammars were asserted
    • other small bugfixes
  • 0.3.4 (2004-09-16)
    • better error messages for dynac
    • fixed more portability issues (e.g. sstream, friend declaration of enclosing class)
    • fixed infinite loop bug in lexical scanner
    • fixed bug that occurred when a consequent has the same name as the dyna program itself
    • workaround for type inference bug that confuses same-name symbols in different rules
  • 0.3.3 (2004-08-30)
    • improved portability to other Unix platforms & compilers
  • 0.3.2 (2004-08-24)
    • bugfixes?
  • 0.3.1 (2004-07-?)
    • first publicly released version

Version 0.2

In this version, among other changes, templates were eliminated in order to simplify the code and speed up compilation. Memory management was improved. The initial version of DynaMITE was created.

This version of Dyna was described in Eisner, Goldlust & Smith (ACL 2004). This was the first version that was useful for novel NLP research, notably Smith & Eisner (ACL 2004) and Smith & Smith (EMNLP 2004). (See users.)

Version 0.1

Compiled to C++ classes that were templated on the semiring. Prolog was only used for parsing the Dyna source file.

Version 0.0

A prototype that used SWI Prolog for inference and C++ for managing the priority queue and hash tables.

Personal tools