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 > > > >
