LKB-FOS: new version released

I’ve just created a new binary distribution of LKB-FOS, available as usual via the link on the LkbFos wiki page. The source repository is up to date.

Highlights are a native Apple M1 binary, some interface improvements, and more efficient parsing and generation. (I want processing speed to keep up with advances in resource grammars, such as the recent ERG 2020 release, although I fear I am ultimately doomed to fail…) No significant new features - but I’m working on it. I append a summary of changes, copied from the README.


  • Added a pre-built native binary for Apple M1 (lkb.darwin_arm64).
  • Starting with the (previous) 27 December 2020 release, the default value of mrs::*normalize-predicates-p* has been changed to t. This means that in generation, predicates will be normalised via the SEMI - and indexing for generation therefore expects a SEMI to have been loaded. If there is no SEMI, include (setq mrs::*normalize-predicates-p* nil) at some point in the script file before calling index-for-generator.
  • Generating with *gen-extract-surface-hook* unset gave an error when trying to display the results window in LKB native graphics (LUI graphics was OK) - fixed.
  • For consistency with Allegro CL builds of the LKB, added to *punctuation-characters* seven characters beyond the Basic Latin Unicode block (Ideographic Full Stop etc.)
  • All menus now use modern menu navigation (click to open the menu, click a second time to select a menu item). Also, the LKB Top commands `Options > Shrink/Expand menu’ work more smoothly.
  • Parse trees now look more balanced. Parse trees window opening and resizing are much more responsive when there are hundreds of parses. Fixed minor bug in computing parse tree node labels (any re-entrancies between values of top-level features were ignored).
  • Fixed some minor interface issues in View… command dialogs, parse chart window titles, and the type hierarchy `Show/Hide Types’ commands.
  • Internal improvements to the parser and generator, including: improvements to the hyperactive parsing strategy, tighter packing of passive edges, more economical calling of the unifier, and reduction of garbage collection overheads in batch parsing / generation.
  • Internal improvements to use more appropriate data structures, remove some unnecessary global state, and plug memory leaks. Fixed incorrect code for initializing the dag pool, which could cause batch parsing / generation to fail.
  • Known issues: recent changes in McCLIM result in file and directory icons in the file selector sometimes not being drawn, and LKB Top sometimes not displaying blank lines when it should. Fixes expected for next binary release.