unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
* [ANN] nyacc-2.00.0 released
@ 2024-09-20 17:47 Matt Wette
  2024-09-20 21:19 ` Matt Wette
  0 siblings, 1 reply; 2+ messages in thread
From: Matt Wette @ 2024-09-20 17:47 UTC (permalink / raw)
  To: Guile User

Hi All,

I've generated a new release of nyacc.  Due to major change in
the ffi-helper I'm calling this nyacc-2.00.0.

Thanks to @lechner on #guile for dicussions of pointers and functions.
At the time of this discussion I was also working on extending gtk2+
in Guile to make a tkinter like module.  I was running into issues with
function pointers also.  The result is that I went back and reworked the
handling of pointers and especially function pointers. One can now pass
scheme procedures to functions expecting function pointers, and one can
set function pointers in structures to procedures.

In addition, I reworked a lot of the processing in the ffi-helper
translator.   Previously, special cases were needed to handle several
declarations from miscellaneous libraries.  Those special cases are
now gone.

Folding in the another big change, I've been working on a C data handling
module that provides an interface to C data structures.   This is much
the same function as (bytestructures guile) module, but it is more tuned
to the ffi-helper and (for me) it can work on foreign machine architectures.


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.


NEWS

* added `cdata' module for handling type and data from C libraries
   + see doc/cdata.info
   + capable of dealing with foreign architectures
* major ffi helper update:
   + includes two backends:
     - cdata: depends only on system/foreign/cdata module
     - bytestructures: depends on ffi-help-rt and bytestructures modules
   + by default, the ffi helper now uses the cdata backend
     - scheme bytestructures is not required
     - does not use ffi-help-rt
     - generates ~20% smaller .scm files
     - generates ~40% smaller .go files
   + ffi-help.scm(cnvt-udecl): complete re-write, using udecl->mdecl.
     This no longer has special cases for some include files.
   + handling of functions and function types is much cleaner and
     works better (at least for the author, so far)
* updated system/ffi-help-rt (which is not used by cdata)
   + funtion pointers reworked
   + now depends on guile (system foreign-library)
   + definition of fh-cast changed to be a real cast
   + add fh-varg for use with procedures based on C va-args:
       (printf "ans=%d" (fh-varg ffi:int 3))
* scripts/compile-ffi: now accepts argument for backend:
   $ guild compile-ffi -b bytestructures mymodule.ffi
   $ FFI_HELP_BACKEND=bytestructures guild compile-ffi mymodule.ffi
* scripts/compile-ffi: now computes dependencies correctly (I think)
* moved some nx-language implementation code into examples/languages/
* Work to go:
   + Update READMEs and other documentation.
   + Complete ccode->sexp function to convert strings of C code
     to scheme expressions for small ffi interface code


NYACC maturity is production/stable level.

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

* the tarball repository:
     https://download.savannah.gnu.org/releases/nyacc/

* the git repository:
     git://git.savannah.nongnu.org/nyacc.git

home page, project page and user's guides:
* https://www.nongnu.org/nyacc
* https://savannah.nongnu.org/projects/nyacc
* https://www.nongnu.org/nyacc/nyacc-ug.html
* https://www.nongnu.org/nyacc/ffi-help.html

Report bugs:
* https://savannah.nongnu.org/bugs/?group=nyacc

Get support:
* https://savannah.nongnu.org/support/?group=nyacc
Copyright (C) 2017-2024 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.


Matt




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-09-20 21:19 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-20 17:47 [ANN] nyacc-2.00.0 released Matt Wette
2024-09-20 21:19 ` Matt Wette

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).