Release 1.3.0

Skip to first unread message

Tino Didriksen

Sep 29, 2019, 3:19:27 PM9/29/19
to Constraint Grammar
A new release of CG-3 has been tagged v1.3.0 (r13684), in preparation for the NoDaLiDa 2019 Constraint Grammar Workshop ( ) which takes starts in 11 hours.

Been two and a half years since last formal round-up of features and changes, but things have steadily progressed.

Bugs/issues/request are now on Github, though the authoritative code remains in VISL's svn.

New features:
- Added LIST-TAGS which is very similar to STRICT-TAGS:
- Rules ADD/MAP/COPY now takes BEFORE|AFTER to mark where exactly you want the new tags to go. This was implemented to alleviate the need for abusing SUBSTITUTE:
- Added 3 functions to the C API from Paul Meurer <​>
- Added META tags to query non-CG information:
- Added stream static tags:
- New tool cg-sort which performs the equivalent of sort|uniq on each cohort's readings. Does not yet handle sub-readings.
- Added PROTECT and UNPROTECT to mark readings as untouchable:
- Added contextual modifier N to say that self should not count as the barrier:
- New tool cg-untrace which strips tracing information from the stream, which means all deleted readings and trace tags.
- Added -o / --ordered cmdline flag. For now, this only makes duplicate tags actually matter when determining whether or not a reading is identical to another.
- Added cmdline flag --deleted to treat ; readings in the input as proper deleted readings, instead of as text.
- Added shorthand syntax @< and @> to jump to the absolute position in the respectively previous and next window.
- Added INCLUDE STATIC to only include the non-rule parts of another grammar. Very useful if you have an existing grammar that you want to separate some parts of without duplicating set definitions:
- Added a Python 3 module from Lokendra Singh <​>

- For self-tests, BARRIER now also tests and stops if the selv matches it
- When tracing, invisible magic readings are now given form
- CG-3 now assumes UTF-8 for all I/O, and the -C and --codepage-* options are deprecated
- Code now takes much more advantage of C++14 and C99
- Named relations can now be constructed from captured snippets, same as varstrings
- Regex captures from dependency target contexts are now allowed, even without any captures in normal target contexts
- Cmdline flag --num-windows is now exact. Before it was merely a minimum.
- Map/Add/etc mapping sets can now be a mix of inline and sets, as long as everything is of LIST-type.
- The symbol ! is no longer an alias of the fail-fast prefix ^
- The tools now all default to being silent when in processing mode
- Detects and breaks out if MOVE/SWITCH goes into an endless loop
- COPY EXCEPT will now except from sub-readings as well as main reading
- Now warns when ** is used in contexts where it doesn't make sense
- Multiple distinct &&-unification sets can now be active at the same time in different uses
- For &&-unification, you can use the same set for different unified matches by prefixing the set name with a number and colon. E.g., &&SAME-SEM is a different match than &&1:SAME-SEM.

Fixed Bugs:
- Linked OR'ed templates now actually work
- COPY now also copies sub-readings
- Better maintain reading order through various manipulations

Main site is
Google Group is
Source snapshots available at
Windows binary is at
OS X binary is at
RHEL/Fedora/CentOS/OpenSUSE packages are at
Debian/Ubuntu packages are at

-- Tino Didriksen
Reply all
Reply to author
0 new messages