[ANN] nyacc 1.01.1 released

2020-02-22 Thread Matt Wette

[note: guix package spec included below]

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 in V1.01.1 relative to V1.00.1 (V1.01.0 not released)
    * read-only struct-vable fields in ffi-helper changed to writable:
  guile 3.0 deprecates read-only fields
    * Split expand-typerefs from c99/munge.scm into c99/munge-base.scm.
  This should exliminate the warning about undefined 
expand-typerefs.

    * Eliminated deprecated symbols from c99/munge.scm: udecl->mspec
  udecl->mspec/comm mspec->udecl tree->udict tree->udict/deep
  declr->ident match-decl match-comp-decl match-param-decl
  expand-decl-typerefs fix-fields.
    * now installing examples in $(DATADIR)/nyacc/examples
    * updated configure.ac to be guix-compatible
    * changed configure : removed guile.m4 pkg.m4 nyacc.m4

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





(define-module (nyacc-next)
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix git-download)
  #:use-module (guix build-system gnu)
  #:use-module (guix licenses)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages guile))

(define nyacc-sha256-base32-map
  '(("9.99.9" . "marker - do not delete")
    ("1.01.1" . "0m64lkm811lzngjkmw7vvprbdzphyvrd3h0fs63jnvvx9ysaa6zc")
    ("0.00.0" . "marker - do not delete")))

;; Note that nyacc is defined in (gnu packages mes).
(define-public nyacc-next
  (package
   (name "nyacc-next")
   (version "1.01.1")
   (source
    (origin
 #|
 (method url-fetch)
 (uri (string-append
       "https://download.savannah.gnu.org/releases/nyacc/nyacc-";
       version
       ".tar.gz"))
 (sha256 (base32 (assoc-ref nyacc-sha256-base32-map version)))
 |#
 (method git-fetch)
 (uri (git-reference (url "git://git.savannah.nongnu.org/nyacc.git")
             (commit "c52fdb10fc723392643b7e32128f18e8f4f5194a")))
 (sha256 (base32 
"19crbplnj8zpg99ngxrfl4qbc1xhsl5w4wkawi3n2zzg0gq618bc"))

 ))
   (build-system gnu-build-system)
   (inputs `(("guile-next" ,guile-next)
 ("bytestructures" ,guile3.0-bytestructures)))
   (synopsis "parser generator for Guile, with C parser and FFI code 
generator")

   (description
    "NYACC, for Not Yet Another Compiler Compiler, is a set of Guile 
modules for
generating LALR(1) parsers and lexical analyzers.  It includes a decent 
C parser
that outputs syntax trees in SXML, and a code generator (the FFI helper) 
that

generates Guile modules from C headers and libraries.  Example parsers are
provided for Javascript and Octave.")
   (home-page "http://www.nongnu.org/nyacc/";)
   (license lgpl3+)))





Re: [ANN] nyacc 1.01.1 released

2020-02-22 Thread Jack Hill

On Sat, 22 Feb 2020, Matt Wette wrote:


NYACC maturity is production/stable level.

NYACC is free software


Yay, congratulations on the release!

Thanks,
Jack



Unsafe Conversions and Inlining

2020-02-22 Thread Christopher Howard
Hi, I'm doing a project with SDR involving a lot of number crunching,
as SDR usually does, with Guile 3.0 embedded in a C application. Of
course,  the idea is to have the C functions handle the low-level
number crunching. But it some places it is difficult to get around
performance hits from required scheme conversions, e.g.: scheme
bytevector -> scheme pointer -> C pointer. Of course, working on
reducing those, but wondering...

(1) Do I have any options for unsafe conversions, e.g., some guile
library out there which would convert bytevector to C pointer without
typechecking?

(2) Is there anything I can do as far as inlining those core conversion
functions that might be useful?

-- 
Christopher Howard
p: +1 (907) 374-0257
w: https://librehacker.com
social: https://gnusocial.club/librehacker
gpg: ADDEAADE5D607C8D (keys.gnupg.net)