Re: [ANN] nyacc 3.00.0 released

Matt Wette <[email protected]> Wed, 12 Nov 2025 07:06:50 -0800
Newsgroups gmane.lisp.guile.user
Message-ID <[email protected]>
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
>
>
>