pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/lang/guile30



Module Name:    pkgsrc
Committed By:   gdt
Date:           Wed Jun 26 22:49:10 UTC 2024

Modified Files:
        pkgsrc/lang/guile30: Makefile PLIST distinfo

Log Message:
lang/guile30: Update to 3.0.10

This is a maintenance release of 3.0.

Changes in 3.0.10 (since 3.0.9)

* Notable changes

** Beginnings of support for alternate back-ends

A number of adaptations and additions of as-yet unstable interfaces have
been made to allow third-party projects such as the Hoot
Guile-to-WebAssembly whole-program compiler
(https://spritely.institute/hoot/) to use the Guile front-end and
optimizer.  Depending on how Hoot development goes, we may consider
adding first-class support for WebAssembly as a compilation target;
discussion is welcome on the guile-devel mailing list.

** `define` in all bodies

`define` adds a definition to the body in which it appears, as if each
non-tail definition or expression in that body were a binding in a
surrounding `letrec*` clause.  However, in some places, using `define`
would result in the annoying error "definition in expression context,
where definitions are not allowed", which could be fixed by explicitly
adding a surrounding binding contour, for example an empty `let`.  This
was because there was no implicit surrounding lexical binding contour
for the body of `when` and `unless`, for `cond` clauses, `case` clauses,
`and-let*` bodies, and `with-fluids`.  But no more; now these contexts
now create a binding contour, allowing the use of `define`.

** Two bug fixes of note regarding scoping of top-level variables

Previously, a reference to a top-level variable in a module other than
the current module would be silently rewritten to reference the current
module, if the variable was unbound in its original module.  This was a
hack from the early days of when we extended psyntax to know about the
module system, and is now fixed to properly use the scope of the
introduced binding instead of the scope of the macro use site.

Also, embarrassingly, sometimes macro-introduced top-level variables
would use the same generated name.  This is because of the strategy
discussed in the manual, "Hygiene and the Top-Level"; sometimes the
hashes would collide, for example if two definitions were the same in
the beginning and only differed long into the end.  This has been fixed
to ensure name uniqueness.

* New interfaces and functionality

** R6RS custom textual ports

Guile finally supports this venerable R6RS interface; see "Custom Ports"
in the manual for more.  These ports are suspendable (see "Non-Blocking
I/O").  Also new in this release, custom binary ports are now
suspendable as well.

** New "soft port" interface

Instead of using R6RS custom textual ports, we recommend the new "soft
ports" facility, because it is easier to use while also being more
expressive.  See "Soft Ports" in the manual for more details.

Soft ports are implemented by the new module `(ice-9 soft-ports)`.
There is a legacy "soft ports" facility exported by `(guile)` which will
be deprecated at some point.

** New "custom port" facility: (ice-9 custom-ports)

Custom ports are like R6RS custom binary ports, but lower-level, having
access to all of Guile's internal port API.  See "Custom Ports" in the
manual.

** New surface syntax: Wisp (SRFI-119)

Guile now includes SRFI-119, commonly referred to as Wisp (for
"Whitespace for Lisp"), a Pythonesque surface syntax for Scheme where
parentheses are replaced by equivalent indentation.  See SRFI-119 in the
manual.

** New warning: unused-module

This analysis, enabled at `-W2', issues warnings for modules that appear
in a `use-modules' form or as a #:use-module clause of `define-module',
and whose bindings are unused.  This is useful to trim the list of
imports of a module.

In some cases, the compiler cannot conclude whether a module is
definitely unused---this is notably the case for modules that are only
used at macro-expansion time, such as (srfi srfi-26).  In those cases,
the compiler reports it as "possibly unused".

** New documentation on inline procedure property declarations

Did you know that you can annotate procedures with properties?  It goes
like this:

  (define (frobnicate)
    #((fruits . (apple banana)))
    (whatever))
  (procedure-property frobnicate 'fruits) => (apple banana)

Now you know, and now it is documented in "Procedure Properties" in the
manual.  It has been this way since at Guile 2.0, but was never
documented before.

** New procedure annotation: maybe-unused

The utility of the `-Wunused-toplevel` warning, enabled at `-W2`, has
historically been somewhat limited, especially when a macro generates a
number of bindings, not all of which may be used.  To produce more
useful results, we now allow procedures to set the `maybe-unused`
property, which if true will not result in unused-toplevel warnings.
This property is set by `define-inlinable`, in case an inline binding
never needs the procedure-as-value definition.

** New exports from `(system foreign)`: read-c-struct, write-c-struct

See "Foreign Structs" in the manual.  These macros are like the older
`parse-c-struct` / `make-c-struct` procedures, but they are more
efficient because they inline the field accesses and don't deal in
lists.

** Wider backtraces when not writing to a terminal

When writing a backtrace, if the output port is not a terminal, Guile
truncates the lines at 500 characters instead of 80.  Override this
width via the `default-frame-width` parameter exported by the `(system
repl debug)` module.

** copy-file now supports copy-on-write

The copy-file procedure now takes an additional keyword argument,
#:copy-on-write, specifying whether copy-on-write should be done, if the
underlying file-system supports it.  Possible values are 'always, 'auto
and 'never, with 'auto being the default.

This speeds up copying large files a lot while saving the disk space.

** 'seek' can now navigate holes in sparse files

On systems that support it, such as GNU/Linux, the new SEEK_DATA and
SEEK_HOLE values can now be passed to the 'seek' procedure to change
file offset to the next piece of data or to the next hole in sparse
files.  See "Random Access" in the manual for details.

** ((scm foreign-object) make-foreign-object-type) now supports #:super

A list of superclasses can now be provided via #:super.

** 'get-bytevector-all' is now written in Scheme and is thus suspendable

The 'get-bytevector-all' procedure from (rnrs io ports) and (ice-9
binary-port) used to be implemented in C, making it non-suspendable--a
bummer for programs using suspendable ports and Fibers.  It has been
rewritten in Scheme, addressing this limitation.

* Performance improvements

** Better compilation of calls to procedures with keyword arguments

Calls to keyword-arg functions can now be inlined.  Even when not
inlined, sometimes now we can compute default values for missing
keywords at the callee instead of in the caller.

** Better compilation of append with more than 2 arguments
** Better compilation logand with one immediate argument
** Better type inference for result of symbol-hash
** Elide effect-free primitive calls when called for effect
** Constant folding for string->utf8
** JIT improvements for rarely-used push/pop/drop
** Better type inference for numeric tower predicates
** Better compilation for calls to raise-exception
** Smaller disk usage via sparse binary files

* New deprecations

** (ice-9 lineio)

Use read-line together with unread-string instead.

* Changes to the distribution

** Parallel test driver for Guile unit tests

Guile's internal unit test harness is now compatible with Automake's
parallel test driver, allowing `make check -j20` to use 20 cores, if you
have them.  Send any bug reports to bug-guile%gnu.org@localhost.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 pkgsrc/lang/guile30/Makefile
cvs rdiff -u -r1.3 -r1.4 pkgsrc/lang/guile30/PLIST
cvs rdiff -u -r1.6 -r1.7 pkgsrc/lang/guile30/distinfo

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/lang/guile30/Makefile
diff -u pkgsrc/lang/guile30/Makefile:1.9 pkgsrc/lang/guile30/Makefile:1.10
--- pkgsrc/lang/guile30/Makefile:1.9    Fri Mar  1 06:34:45 2024
+++ pkgsrc/lang/guile30/Makefile        Wed Jun 26 22:49:10 2024
@@ -1,8 +1,7 @@
-# $NetBSD: Makefile,v 1.9 2024/03/01 06:34:45 kim Exp $
+# $NetBSD: Makefile,v 1.10 2024/06/26 22:49:10 gdt Exp $
 
-DISTNAME=      guile-3.0.9
+DISTNAME=      guile-3.0.10
 PKGNAME=       ${DISTNAME:S/guile/guile30/}
-PKGREVISION=   1
 CATEGORIES=    lang
 MASTER_SITES=  ${MASTER_SITE_GNU:=guile/}
 

Index: pkgsrc/lang/guile30/PLIST
diff -u pkgsrc/lang/guile30/PLIST:1.3 pkgsrc/lang/guile30/PLIST:1.4
--- pkgsrc/lang/guile30/PLIST:1.3       Wed Jan 25 18:12:00 2023
+++ pkgsrc/lang/guile30/PLIST   Wed Jun 26 22:49:10 2024
@@ -1,4 +1,4 @@
-@comment $NetBSD: PLIST,v 1.3 2023/01/25 18:12:00 gdt Exp $
+@comment $NetBSD: PLIST,v 1.4 2024/06/26 22:49:10 gdt Exp $
 guile/3.0/bin/guild
 guile/3.0/bin/guile
 guile/3.0/bin/guile-config
@@ -145,6 +145,7 @@ guile/3.0/lib/guile/3.0/ccache/ice-9/com
 guile/3.0/lib/guile/3.0/ccache/ice-9/control.go
 guile/3.0/lib/guile/3.0/ccache/ice-9/copy-tree.go
 guile/3.0/lib/guile/3.0/ccache/ice-9/curried-definitions.go
+guile/3.0/lib/guile/3.0/ccache/ice-9/custom-ports.go
 guile/3.0/lib/guile/3.0/ccache/ice-9/deprecated.go
 guile/3.0/lib/guile/3.0/ccache/ice-9/documentation.go
 guile/3.0/lib/guile/3.0/ccache/ice-9/eval-string.go
@@ -200,6 +201,7 @@ guile/3.0/lib/guile/3.0/ccache/ice-9/scm
 guile/3.0/lib/guile/3.0/ccache/ice-9/serialize.go
 guile/3.0/lib/guile/3.0/ccache/ice-9/session.go
 guile/3.0/lib/guile/3.0/ccache/ice-9/slib.go
+guile/3.0/lib/guile/3.0/ccache/ice-9/soft-ports.go
 guile/3.0/lib/guile/3.0/ccache/ice-9/stack-catch.go
 guile/3.0/lib/guile/3.0/ccache/ice-9/streams.go
 guile/3.0/lib/guile/3.0/ccache/ice-9/string-fun.go
@@ -228,14 +230,16 @@ guile/3.0/lib/guile/3.0/ccache/language/
 guile/3.0/lib/guile/3.0/ccache/language/cps/effects-analysis.go
 guile/3.0/lib/guile/3.0/ccache/language/cps/elide-arity-checks.go
 guile/3.0/lib/guile/3.0/ccache/language/cps/graphs.go
+guile/3.0/lib/guile/3.0/ccache/language/cps/guile-vm.go
+guile/3.0/lib/guile/3.0/ccache/language/cps/guile-vm/loop-instrumentation.go
+guile/3.0/lib/guile/3.0/ccache/language/cps/guile-vm/lower-primcalls.go
+guile/3.0/lib/guile/3.0/ccache/language/cps/guile-vm/reify-primitives.go
 guile/3.0/lib/guile/3.0/ccache/language/cps/intmap.go
 guile/3.0/lib/guile/3.0/ccache/language/cps/intset.go
 guile/3.0/lib/guile/3.0/ccache/language/cps/licm.go
-guile/3.0/lib/guile/3.0/ccache/language/cps/loop-instrumentation.go
 guile/3.0/lib/guile/3.0/ccache/language/cps/optimize.go
 guile/3.0/lib/guile/3.0/ccache/language/cps/peel-loops.go
 guile/3.0/lib/guile/3.0/ccache/language/cps/prune-top-level-scopes.go
-guile/3.0/lib/guile/3.0/ccache/language/cps/reify-primitives.go
 guile/3.0/lib/guile/3.0/ccache/language/cps/renumber.go
 guile/3.0/lib/guile/3.0/ccache/language/cps/return-types.go
 guile/3.0/lib/guile/3.0/ccache/language/cps/rotate-loops.go
@@ -280,6 +284,7 @@ guile/3.0/lib/guile/3.0/ccache/language/
 guile/3.0/lib/guile/3.0/ccache/language/tree-il/compile-cps.go
 guile/3.0/lib/guile/3.0/ccache/language/tree-il/cps-primitives.go
 guile/3.0/lib/guile/3.0/ccache/language/tree-il/debug.go
+guile/3.0/lib/guile/3.0/ccache/language/tree-il/demux-lambda.go
 guile/3.0/lib/guile/3.0/ccache/language/tree-il/effects.go
 guile/3.0/lib/guile/3.0/ccache/language/tree-il/eta-expand.go
 guile/3.0/lib/guile/3.0/ccache/language/tree-il/fix-letrec.go
@@ -291,6 +296,8 @@ guile/3.0/lib/guile/3.0/ccache/language/
 guile/3.0/lib/guile/3.0/ccache/language/tree-il/resolve-free-vars.go
 guile/3.0/lib/guile/3.0/ccache/language/tree-il/spec.go
 guile/3.0/lib/guile/3.0/ccache/language/value/spec.go
+guile/3.0/lib/guile/3.0/ccache/language/wisp.go
+guile/3.0/lib/guile/3.0/ccache/language/wisp/spec.go
 guile/3.0/lib/guile/3.0/ccache/oop/goops.go
 guile/3.0/lib/guile/3.0/ccache/oop/goops/accessors.go
 guile/3.0/lib/guile/3.0/ccache/oop/goops/active-slot.go
@@ -467,7 +474,7 @@ guile/3.0/lib/guile/3.0/ccache/web/serve
 guile/3.0/lib/guile/3.0/ccache/web/uri.go
 guile/3.0/lib/guile/3.0/extensions/guile-readline.la
 guile/3.0/lib/libguile-3.0.la
-guile/3.0/lib/libguile-3.0.so.1.6.0-gdb.scm
+guile/3.0/lib/libguile-3.0.so.1.7.0-gdb.scm
 guile/3.0/lib/pkgconfig/guile-3.0.pc
 guile/3.0/man/man1/guile.1
 guile/3.0/share/aclocal/guile.m4
@@ -484,6 +491,7 @@ guile/3.0/share/guile/3.0/ice-9/common-l
 guile/3.0/share/guile/3.0/ice-9/control.scm
 guile/3.0/share/guile/3.0/ice-9/copy-tree.scm
 guile/3.0/share/guile/3.0/ice-9/curried-definitions.scm
+guile/3.0/share/guile/3.0/ice-9/custom-ports.scm
 guile/3.0/share/guile/3.0/ice-9/deprecated.scm
 guile/3.0/share/guile/3.0/ice-9/documentation.scm
 guile/3.0/share/guile/3.0/ice-9/eval-string.scm
@@ -545,6 +553,7 @@ guile/3.0/share/guile/3.0/ice-9/scm-styl
 guile/3.0/share/guile/3.0/ice-9/serialize.scm
 guile/3.0/share/guile/3.0/ice-9/session.scm
 guile/3.0/share/guile/3.0/ice-9/slib.scm
+guile/3.0/share/guile/3.0/ice-9/soft-ports.scm
 guile/3.0/share/guile/3.0/ice-9/stack-catch.scm
 guile/3.0/share/guile/3.0/ice-9/streams.scm
 guile/3.0/share/guile/3.0/ice-9/string-fun.scm
@@ -573,14 +582,16 @@ guile/3.0/share/guile/3.0/language/cps/d
 guile/3.0/share/guile/3.0/language/cps/effects-analysis.scm
 guile/3.0/share/guile/3.0/language/cps/elide-arity-checks.scm
 guile/3.0/share/guile/3.0/language/cps/graphs.scm
+guile/3.0/share/guile/3.0/language/cps/guile-vm.scm
+guile/3.0/share/guile/3.0/language/cps/guile-vm/loop-instrumentation.scm
+guile/3.0/share/guile/3.0/language/cps/guile-vm/lower-primcalls.scm
+guile/3.0/share/guile/3.0/language/cps/guile-vm/reify-primitives.scm
 guile/3.0/share/guile/3.0/language/cps/intmap.scm
 guile/3.0/share/guile/3.0/language/cps/intset.scm
 guile/3.0/share/guile/3.0/language/cps/licm.scm
-guile/3.0/share/guile/3.0/language/cps/loop-instrumentation.scm
 guile/3.0/share/guile/3.0/language/cps/optimize.scm
 guile/3.0/share/guile/3.0/language/cps/peel-loops.scm
 guile/3.0/share/guile/3.0/language/cps/prune-top-level-scopes.scm
-guile/3.0/share/guile/3.0/language/cps/reify-primitives.scm
 guile/3.0/share/guile/3.0/language/cps/renumber.scm
 guile/3.0/share/guile/3.0/language/cps/return-types.scm
 guile/3.0/share/guile/3.0/language/cps/rotate-loops.scm
@@ -625,6 +636,7 @@ guile/3.0/share/guile/3.0/language/tree-
 guile/3.0/share/guile/3.0/language/tree-il/compile-cps.scm
 guile/3.0/share/guile/3.0/language/tree-il/cps-primitives.scm
 guile/3.0/share/guile/3.0/language/tree-il/debug.scm
+guile/3.0/share/guile/3.0/language/tree-il/demux-lambda.scm
 guile/3.0/share/guile/3.0/language/tree-il/effects.scm
 guile/3.0/share/guile/3.0/language/tree-il/eta-expand.scm
 guile/3.0/share/guile/3.0/language/tree-il/fix-letrec.scm
@@ -636,6 +648,8 @@ guile/3.0/share/guile/3.0/language/tree-
 guile/3.0/share/guile/3.0/language/tree-il/resolve-free-vars.scm
 guile/3.0/share/guile/3.0/language/tree-il/spec.scm
 guile/3.0/share/guile/3.0/language/value/spec.scm
+guile/3.0/share/guile/3.0/language/wisp.scm
+guile/3.0/share/guile/3.0/language/wisp/spec.scm
 guile/3.0/share/guile/3.0/oop/goops.scm
 guile/3.0/share/guile/3.0/oop/goops/accessors.scm
 guile/3.0/share/guile/3.0/oop/goops/active-slot.scm

Index: pkgsrc/lang/guile30/distinfo
diff -u pkgsrc/lang/guile30/distinfo:1.6 pkgsrc/lang/guile30/distinfo:1.7
--- pkgsrc/lang/guile30/distinfo:1.6    Wed Apr 24 06:47:55 2024
+++ pkgsrc/lang/guile30/distinfo        Wed Jun 26 22:49:10 2024
@@ -1,7 +1,7 @@
-$NetBSD: distinfo,v 1.6 2024/04/24 06:47:55 wiz Exp $
+$NetBSD: distinfo,v 1.7 2024/06/26 22:49:10 gdt Exp $
 
-BLAKE2s (guile-3.0.9.tar.gz) = 0b58897075659445a370db20baab6c90c284bd27f897e269498977fcbf686543
-SHA512 (guile-3.0.9.tar.gz) = 6fd14f0860c7f5b7a9b53c43a60c6a7ca53072684ddc818cd10c720af2c5761ef110b29af466b89ded884fb66d66060894b14e615eaebee8844c397932d05fa2
-Size (guile-3.0.9.tar.gz) = 9734735 bytes
+BLAKE2s (guile-3.0.10.tar.gz) = 7a431238bf907f34cfd29430786731cdc428216e3d2c5fe0bd7f0a01b0cda841
+SHA512 (guile-3.0.10.tar.gz) = 8b0e6354fdfccd009fd92a5618828f8a8343faf20d1d3698be77a6ef7a8fe56ce633fd1239520e6a6be511ba4ca75eb90c8a81c45888b8b73d938cd2908d7a1f
+Size (guile-3.0.10.tar.gz) = 9738824 bytes
 SHA1 (patch-libguile_loader.c) = 32b012d095c343995f93d0c8160411c4b0cfbee1
 SHA1 (patch-libguile_posix.c) = 175dd5caf7251043ebc7c44ad2ea4547726e15d4



Home | Main Index | Thread Index | Old Index