[ANN] nyacc 3.03.0 released

Matt Wette <[email protected]> Thu, 26 Feb 2026 08:12:35 -0800
Newsgroups gmane.lisp.guile.user
Message-ID <[email protected]>
Hi All,

For those unfamiliar with nyacc, the nominal release message appears below.

This release of nyacc is significant in that I have performed a major 
update of
the C99 preprocessor.  It is fully token based now.   There is a risk 
that I missed
something.  Please report any issues.

Also, I'm targeting for V4 to separate the cdata code.  To that end, 
I've created
a repo for cdata now.  It's at https://github.com/mwette/guile-cdata.


NYACC, for Not Yet Another Compiler Compiler, is set of guile modules for
generating parsers and lexical analyzers.  It also provides sample parsers
and pretty-printers using SXML trees as an intermediate representation.

It provides a decent C parser and a `FFI Helper' tool to help create
Guile Scheme bindings for C-based libraries.

It provides (partially implemented) compilers based on above mentioned
parsers to allow execution with Guile as extension languages.

Updates since V3.02.1:
* Reworked C99 preprocessor to be token-based. Tests show
   the C parser is running more than 15% faster on my x86_64 laptop.
   + For guild compoile-ffi ffi/gtk2.ffi, 3.03 is 15% faster than 3.02:
     3.02.0: 9m20s
     3.03.0: 7m56s
   Please report any issues.
* For C, define __has_include and __has_include_next in util.scm.
* Updated arch-info to add `-linux' to most arch names.
   In the future use `(with-arch "x86_64-linux"' to be more specific.
* removed c99/mach.d/*; c99 now uses module mach.scm directly
   + no intermediate files in mach.d/*, but more dependencies for parser
* for mes, added hooks for simple-match
* fixed bad (int8_t) arch-info for aarch64 and riscv64
* removed pdf files from distribution
* added guix.scm and etc/nyacc-guix.scm
* added `--external-cdata` option to compile-ffi; planning separation
   of (nyacc foreign cdata) to a separate package (foreign cdata);
   + see https://github.com/mwette/guile-cdata
   + for nyacc V4.0 release we will remove
       nyacc/foreign/{arch-info,cdata}.scm
* removed NYACC version number from documents

NYACC maturity is production/stable level.

NYACC is free software; the full source distribution is available through

* the tarball repository:
     https://github.com/mwette/nyacc/releases
   pre 3.00:
     https://download.savannah.gnu.org/releases/nyacc

* the git repository:
     git://github.com:mwette/nyacc.git
   pre 3.00:
     git://git.savannah.nongnu.org/nyacc.git

home page, project page and user's guides:
   https://github.com/mwette/nyacc/wiki

Report bugs:
   https://github.com/mwette/nyacc/issues

Copyright (C) 2017-2025 Matthew Wette

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.  This file is offered as-is,
without any warranty.