Good to hear. I've been hoping that the 2.0 major update works OK, and
it looks like it's reasonable now.
On 11/12/25 3:52 AM, Nala Ginrut wrote:
Thank you very much!
nyacc for ffi is super helpful!
We can bind almost any existing C lib with it instantly, I have
dropped many plans to implement something in Scheme since we can use
mature C lib painlessly.
Best regards.
On Sun, Sep 28, 2025, 02:14 Matt Wette <[email protected]> wrote:
Hi All,
I'm releasing 3.00.0 of NYACC, the first from my github account.
I've moved away from savannah due to performance issues, like others.
Matt
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.
Changes for V3.00.0 from V2.02.3:
* Removed support for bytestructures
* Updated C parser to handle typedefs better.
typedef int foo; int bar(foo foo) { ... }
typedef int foo; struct { foo foo; } x;
typedef int foo; int bar() { typedef short foo; ... }
This amounted to updating a custom make-lalr-parser procedure
which converts unexpected typename tokens to $ident.
* The C parser handles more integer type combinations correctly.
* The C parser now outputs canonical fixed (aka integer) types.
on parsing "short int" it used to output "short int" but now
"short".
* Updated nyacc/foreign/arch-info.scm to handle complex types. This
includes new mtypes z32le, z64le, z32be and z64be.
* Added support of PKG_CONFIG env var to provide path to pkg-config.
* ffi functions returing in or float will not be converted to cdata;
This "feature" had been introduced in one of the earlier 2.0
series.
* Added support for __int128; fixed type: i128 -> s128
* c99(cxeval.scm): fix alignof-type expr in eval-c99-cx
* c99(mach.scm): allow attribute-specifier for compound literal
* ffi-help-cd(udecl->sexp): for typedef struct ref, if struct def was
previously defined use it instead of 'void
* lang/util.scm(move-if-changed): use system* instead of system,
for MES
* lang/util.scm: add def of string-every, for MES
* c99/mach.scm(parse-rhs): changed to syntax-rules from syntax-case
with aid from new macro wrap-term which detects ident's, for MEs
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
<http://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