CQL version 6.2 release notes
The Windows version of CQL 6.2 (build 9.493) will halt with an error message if the input PGN file is larger than two gigabytes. Versions on Unix, Linux and MacOS do not have this limitation. To read PGN files larger than two gigabytes on Windows, replacecql.exe
in the Windows distribution with CQL 6.2 Windows (build 9.494) executable. (Hat tip: Roger Marsh).
CQL version 6.2 beta 2 release notes
We thank Lionel for considerable assistance testing and finding bugs to be fixed for this release.- All known issues in 6.2 beta have been corrected.
CQL version 6.2 beta release notes
- The
piecepath
filter will be removed and should not be used. The piecepath parameter to ⊢ will remain. - The
///
syntax cannot be used from the command line with-cql
(hat tip: Lionel) - The file
palette.cql
in the source distribution (see palette) is missing the∀
symbol. The∀
symbol is still available from the unicode and ∀ pages. It can also be input by using its ASCII representation,[forall]
, and runningcql -u myfile.cql
(hat tip: Lionel) - The example
forced-moves-white.cql
is incorrect. Use the technique inforced-moves-either-side.cql
for this functionality (hat-tip: Lionel). - In order to simplify the CQL languague, the operators
∪=
and∩=
will be removed in a later build. The ASCII equivalent operators|=
and&=
are retained for compatibility purposes but are deprecated.For example, in followpath.cql, the line
Seen∪=to
will be replaced bySeen = Seen ∪ to
- When used as a parameter to ⊢ with ◎, the
primary
keyword is not applied to unfocused moves. Therefore, the ◎ andprimary
parameters to ⊢ should not be used together.The effect of
primary
with◎
can be achieved within the ⊢ by using the filterdepth==pathstart:depth
- There is no mechanism for specifying an atomic variables piece variable.
- A number of new filters are missing from the (table of filters). Use the New CQL 6.2 features link for a list of the new filters for the time being
- atomic variables in a CQL file fails unless each
⊢
in the file has a ◎ (hat tip: Lionel). Thus, instead ofatomic Count=0 ⊢ ―― ――
use
atomic Count=0 ⊢◎▦ ―― ――
In ASCII, the previous line is
path focus . -- --
- Sometimes the smart comment feature will allow comments from a rejected ⊢. Specifically, in a ⊢ filter without a focus when
variations
is set in the CQL header, suppose from a particular position X there are two possible moves, M and N. Suppose that move M appears first in the pgn file. If M leads to a position that matches the ⊢ body but with a shorter sequence of moves than does N, then comments occurring during the search along that sequence of moves starting with M may appear in the output pgn file (the correct comments associated with N will also appear). This does not affect whether a game matches or not and does not delete any correct comments. This issue arises only very rarely in practice. - [hat tip: Lionel] Using # to count the items in a dictionary will signal an error. As a temporary workaround, use something like
Count=0 dictionary D D["foo"]="bar" string Key in D Count+=1
- [hat tip: Lionel] An error is signaled if the dictionary iterator variable is used in the body of string . There is no workaround at this time. The syntax for dictionary iterator variables will be altered any in the next beta.
- The
unbind
filter does not work to delete specific dictionary values; an error is signalled. - There was no specified syntax for iteration over dictionaries with numeric keys. This is corrected in the latest dictionary documentation.
- (If you work extensively with CQL dictionaries, contact us for our latest unreleased build which fixes the above issues).
CQL version 6.1 release notes
For CQL version 6.1 features, see what's new in CQL 6.1. For CQL version 6.0.5, see CQL 6.0.5 documentation- The example zugzwang1.cql can be improved by adding
lca(source target):wtm
to the body of theecho
filter. This ensures that the variation in which the target occurs (the white-to-move position of the thematic zugzwang) is a result of White deviation from the mainline, that is, of a thematic White try. This technique can be used to improve most of the examples that use echo.
CQL version 6.0.5 release notes
- We thank Robert Gamble generally for developing a meticulously programmed code suite, which has improve CQL greatly throughout.
- An command line option
-outputbuffer
has been added. This option must be followed by a positive integer denoting the maximum number of bytes in a single output PGN game (the current default is 105000). This option is experimental and not supported. - The two-piece-cycle.cql CQL file, which illustrates regular expression usage in line , was added to the examples.
CQL version 6.0.4 release notes
- The
-alwayscomment
command line option, which disables smart comments, has been documented
CQL version 6.0.3 release notes
- (bug fixes)
This version is primarily a bug-fix release. We thank Robert Gamble for his assistance with this release.
- When a transform's argument is a numeric filter, then the transform filter itself is numeric with value equal to the maximum of the values of the matching transforms of its argument.
- The transform documentation has been substantially rewritten. In addition to the introduction to transforms, there is now a more formal description. Each transform filter now has its own page.
- comment and message now accept filters that have no value as argument. If the filter has no value, then
<true>
or<false>
is output, depending on whether the filter matches. For examplecomment ("check is: " check)
- max and min now accept more than two arguments.
- Some generic improvements to smart comments were made.
- Transform filters are more efficient in many cases, and are much better at avoiding the generation of redundant transforms.
- Transforms are now documented as supporting the
count
keyword. The use of range parameters to transform filters is now deprecated. - The notransform filter was added.
- The
currenttransform
keyword in message and comment was added.
CQL version 6.0.2 release notes
- persistent variables can be declared without assigning to them in their declaration.
- The experimental
-guipgnstdin
and-guipgnstdout
command line options have been added.
Release Notes for CQL version 6.0
This table below is a partial list of changes from CQL version 5.2 to CQL version 6.0. It is not complete due to the large number of changes that were made.We thank Robert Gamble for his assistance in finding and fixing numerous bugs in version 6.0.
Note that there were also some important changes from CQL version 5.1 to CQL version 5.2. If you are still using CQL version 5.1, read the release notes for CQL 5.2 before reading these release notes. CQL 6 also runs much faster than previous versions, particularly on complex CQL files. (On an 8-core machine, we typically see speedups of a factor of between 10 and 80 compared to CQL 5.2, depending on the exactly CQL file and PGN database). CQL 6 is also substantially more expressive and compact than previous versions of CQL.
Feature | Example | Description |
---|---|---|
multi-threaded execution | cql foo.cql |
CQL by default runs in multiple threads |
Variable names need not start with a dollar sign | checkers=A attack k |
A variable name can be any sequence of allowed characters and need not start with a dollar sign |
Variables can hold integers, sets of squares or positions | Attacks=A attacks . x = #Attacks y=find check
|
More powerful variables |
Arithmetic expressions | power A * 3<power a |
basic integer arithmetic and relational expressions |
legal move checking | move legal enpassant |
move filter supports legal and pseudolegal move computation (as well as castling and capture) |
functions | function forks(x){[rbnqk] attackedby x>1} |
user-defined functions |
if | if pin through a then x else y |
if/then/else statments |
many more command line features | cql -variations foo.cql |
arbitrary filters on the command line many new command line options |
pawn structure filters | passedpawns A&isolatedpawns a&doubledpawns sort connectedpawns |
pawn structure filters |
run cql without a CQL file | cql -i mydatabase.pgn -cql stalemate -cql btm -cql r |
when CQL file is missing, use cql(). as file |
FEN support | cql -fen 8/5kp1/p5N1/P4Pp1/6P1/PKP5/1B1r4/8 -i foo.pgn |
find positions in FEN notation, in CQL file or using -fen command line option |
pin support | .pin through A>1 |
Find pins |
c-style comments | check // the position is check /* this line is ignored */ |
Anything after // on a line in a CQL file is ignored. Anything between /* and */ is ignored. |
xray | xray (A a k) |
Rays where first argument attacks second (renamed from ray attack ) |
persistent variables | persistent NStalemates = NStalemates +1 |
persistent variables retain their value between games. They can be used for statistics |
echo | echo(s t) s&t==. |
simpler and more powerful replacement for old relation syntax |