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
>
> home page, project page and user's guides:
>    https://github.com/mwette/nyacc/wiki
>
> Report bugs:
>    https://github.com/mwette/nyacc/issues
>
>
>
>

Reply via email to