Re: GNU Guile 2.9.9 Released [beta]
On Tue 14 Jan 2020 22:48, Stefan Israelsson Tampe writes: > Strange that I did not dee this error before in the 2.x series > ever. Isn't it so that for procedures define in a (let () ...) the > case you are mentioning happened before but I was on the impression > that no inlining was done for defines on different places in the > module before This is correct, yes. The declarative bindings optimization makes toplevel bindings more like letrec bindings, which exposes them to this other optimization. My point was that since Guile 2.0, procedure identity has not been firmly guaranteed in all cases. Andy
Re: GNU Guile 2.9.9 Released [beta]
I have a fix for this by pushing the method idiom to another module. So it is not a burning issue. Strange that I did not dee this error before in the 2.x series ever. Isn't it so that for procedures define in a (let () ...) the case you are mentioning happened before but I was on the impression that no inlining was done for defines on different places in the module before I also have a request to be able to silence warning of unbound variables that is not so for e.g. a python implementation. Previously I modded message.scm and compile.scm so that I can add symbols that will not issue a warning when compiling. It consists of (define %dont-warn-list (make-fluid '())) ;; Exported (define %add-to-warn-list (lambda (sym) (fluid-set! (M %dont-warn-list) (cons sym (fluid-ref (M %dont-warn-list)) And inside the warning emitter one checks for matches in the don't warn list and mute if it matches. For this to work we need also change the compiler as in compile.scm (see the %dont-warn-list line ... (define-set-C compile-file (lambda* (file #:key (output-file #f) (from ((C default-language) file)) (to 'bytecode) (env ((C default-environment) from)) (opts '()) (canonicalization 'relative)) (with-fluids (((C %in-compile ) #t ) ((C %in-file) file ) ((@@ (system base message) %dont-warn-list) '() ) ((C %file-port-name-canonicalization) canonicalization ) ((C %current-file% ) file)) It would also be fabulous to direct the compiler depeneding on extensions of the file which is also something I have to make the python environment nicer. On Tue, Jan 14, 2020 at 10:17 PM Andy Wingo wrote: > On Tue 14 Jan 2020 21:13, Stefan Israelsson Tampe > writes: > > > Okey, here is another case that fails with the patch that prevents > identity misses for toplevels e.g we need similar fixes for anonymous > functions. > > > > (define-module (b) > > #:export (q)) > > > > (define h (make-hash-table)) > > (define (method f) > > (hash-set! h f 1) > > f) > > (define q (method (lambda x x))) > > > > (pk (hash-ref h q)) > > > > This fails with (#f) > > > > I solved this in my code by placing the method function in another > module. > > Interestingly, this case is not really related to the declarative > bindings optimization, letrectification, or other things. It's the same > as: > > (let ((h (make-hash-table))) > (define (method f) > (hash-set! h f 1) > f) > (let* ((q (let ((f (lambda x x))) > (method f > (pk (hash-ref h q > > I.e. no top-level bindings are needed. This prints #f in releases as > old as 2.0.14 and probably older :) It optimizes as: > > (let* ((h (make-hash-table)) > (q (begin > (hash-set! h (lambda x x) 1) > (lambda x x > (pk (hash-ref h q))) > > So, not a recent change. Of course we can discuss whether it's the > right thing or not! > > Andy >
Re: GNU Guile 2.9.9 Released [beta]
On Tue 14 Jan 2020 21:13, Stefan Israelsson Tampe writes: > Okey, here is another case that fails with the patch that prevents identity > misses for toplevels e.g we need similar fixes for anonymous functions. > > (define-module (b) > #:export (q)) > > (define h (make-hash-table)) > (define (method f) > (hash-set! h f 1) > f) > (define q (method (lambda x x))) > > (pk (hash-ref h q)) > > This fails with (#f) > > I solved this in my code by placing the method function in another module. Interestingly, this case is not really related to the declarative bindings optimization, letrectification, or other things. It's the same as: (let ((h (make-hash-table))) (define (method f) (hash-set! h f 1) f) (let* ((q (let ((f (lambda x x))) (method f (pk (hash-ref h q I.e. no top-level bindings are needed. This prints #f in releases as old as 2.0.14 and probably older :) It optimizes as: (let* ((h (make-hash-table)) (q (begin (hash-set! h (lambda x x) 1) (lambda x x (pk (hash-ref h q))) So, not a recent change. Of course we can discuss whether it's the right thing or not! Andy
Re: GNU Guile 2.9.9 Released [beta]
Okey, here is another case that fails with the patch that prevents identity misses for toplevels e.g we need similar fixes for anonymous functions. (define-module (b) #:export (q)) (define h (make-hash-table)) (define (method f) (hash-set! h f 1) f) (define q (method (lambda x x))) (pk (hash-ref h q)) This fails with (#f) I solved this in my code by placing the method function in another module. On Mon, Jan 13, 2020 at 9:39 AM Andy Wingo wrote: > We are pleased to announce GNU Guile release 2.9.9. This is the ninfth > and probably final pre-release of what will eventually become the 3.0 > release series. > > Compared to the current stable series (2.2.x), the future Guile 3.0 adds > support for just-in-time native code generation, speeding up all Guile > programs. See the NEWS extract at the end of the mail for full details. > > Compared to the previous prerelease (2.9.7), Guile 2.9.8 fixes a number > of bugs. > > The current plan is to make a 3.0.0 final release on 17 January 2020. > If there's nothing wrong with this prerelease, 3.0.0 will be essentially > identical to 2.9.9. With that in mind, please test and make sure the > release works on your platform! Please send any build reports (success > or failure) to guile-de...@gnu.org, along with platform details. You > can file a bug by sending mail to bug-gu...@gnu.org. > > The Guile web page is located at http://gnu.org/software/guile/, and > among other things, it contains a copy of the Guile manual and pointers > to more resources. > > Guile is an implementation of the Scheme programming language, packaged > for use in a wide variety of environments. In addition to implementing > the R5RS, R6RS, and R7RS Scheme standards, Guile includes a module > system, full access to POSIX system calls, networking support, multiple > threads, dynamic linking, a foreign function call interface, powerful > string processing, and HTTP client and server implementations. > > Guile can run interactively, as a script interpreter, and as a Scheme > compiler to VM bytecode. It is also packaged as a library so that > applications can easily incorporate a complete Scheme interpreter/VM. > An application can use Guile as an extension language, a clean and > powerful configuration language, or as multi-purpose "glue" to connect > primitives provided by the application. It is easy to call Scheme code > From C code and vice versa. Applications can add new functions, data > types, control structures, and even syntax to Guile, to create a > domain-specific language tailored to the task at hand. > > Guile 2.9.9 can be installed in parallel with Guile 2.2.x; see > > http://www.gnu.org/software/guile/manual/html_node/Parallel-Installations.html > . > > A more detailed NEWS summary follows these details on how to get the > Guile sources. > > Here are the compressed sources: > http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.lz (10MB) > http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.xz (12MB) > http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.gz (21MB) > > Here are the GPG detached signatures[*]: > http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.lz.sig > http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.xz.sig > http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.gz.sig > > Use a mirror for higher download bandwidth: > http://www.gnu.org/order/ftp.html > > Here are the SHA256 checksums: > > 59f136e5db36eba070cc5e68784e632dc2beae4b21fd6c7c8ed2c598cc992efc > guile-2.9.9.tar.lz > bf71920cfa23e59fc6257bee84ef4dfeccf4f03e96bb8205592e09f9dbff2969 > guile-2.9.9.tar.xz > eafe394cf99d9dd1ab837e6d1b9b2b8d9f0cd13bc34e64ca92456ce1bc2b1925 > guile-2.9.9.tar.gz > > [*] Use a .sig file to verify that the corresponding file (without the > .sig suffix) is intact. First, be sure to download both the .sig file > and the corresponding tarball. Then, run a command like this: > > gpg --verify guile-2.9.9.tar.gz.sig > > If that command fails because you don't have the required public key, > then run this command to import it: > > gpg --keyserver keys.gnupg.net --recv-keys > 4FD4D288D445934E0A14F9A5A8803732E4436885 > > and rerun the 'gpg --verify' command. > > This release was bootstrapped with the following tools: > Autoconf 2.69 > Automake 1.16.1 > Libtool 2.4.6 > Gnulib v0.1-1157-gb03f418 > Makeinfo 6.7 > > An extract from NEWS follows. > > > Changes since alpha 2.9.8 (since 2.9.7): > > * Notable changes > > ** `define-module' #:autoload no longer pulls in the whole module > > One of the ways that a module can use another is "autoloads". For > example: > > (define-module (a) #:autoload (b) (make-b)) > > In this example, module `(b)' will only be imported when the `make-b' > identifier is referenced. However besides the imprecision about when a > given binding is actually referenced, this mechanism used to cause the > whole imported module to become available, not just the specified > bindings. This has now been changed to only import the specified
RE: GNU Guile 2.9.9 Released [beta]
> We are pleased to announce GNU Guile release 2.9.9. When attempting to build on a Debian Jessie 32bit arm system, gcc (Debian 4.9.2-10+deb8u2) 4.9.2 I'm working on updating this system to Debian Stable, but it might require wiping it and doing a fresh install. -Dale make all-recursive make[1]: Entering directory '/home/dsmith/src/guile-2.9.9' Making all in lib make[2]: Entering directory '/home/dsmith/src/guile-2.9.9/lib' make all-recursive make[3]: Entering directory '/home/dsmith/src/guile-2.9.9/lib' make[4]: Entering directory '/home/dsmith/src/guile-2.9.9/lib' make[4]: Nothing to be done for 'all-am'. make[4]: Leaving directory '/home/dsmith/src/guile-2.9.9/lib' make[3]: Leaving directory '/home/dsmith/src/guile-2.9.9/lib' make[2]: Leaving directory '/home/dsmith/src/guile-2.9.9/lib' Making all in meta make[2]: Entering directory '/home/dsmith/src/guile-2.9.9/meta' make[2]: Nothing to be done for 'all'. make[2]: Leaving directory '/home/dsmith/src/guile-2.9.9/meta' Making all in libguile make[2]: Entering directory '/home/dsmith/src/guile-2.9.9/libguile' make all-am make[3]: Entering directory '/home/dsmith/src/guile-2.9.9/libguile' CC libguile_3.0_la-jit.lo jit.c:232:1: error: initializer element is not constant static const jit_gpr_t THREAD = JIT_V0; ^ jit.c:237:1: error: initializer element is not constant static const jit_gpr_t SP = JIT_R0; ^ jit.c:243:1: error: initializer element is not constant static const jit_gpr_t FP = JIT_R1; ^ jit.c:248:1: error: initializer element is not constant static const jit_gpr_t OLD_FP_FOR_RETURN_TRAMPOLINE = JIT_V1; /* T0 */ ^ jit.c:251:1: error: initializer element is not constant static const jit_gpr_t T0 = JIT_V1; ^ jit.c:252:1: error: initializer element is not constant static const jit_gpr_t T1 = JIT_V2; ^ jit.c:253:1: error: initializer element is not constant static const jit_gpr_t T2 = JIT_R2; ^ jit.c:254:1: error: initializer element is not constant SCM_UNUSED static const jit_gpr_t T3_OR_FP = JIT_R1; ^ jit.c:255:1: error: initializer element is not constant SCM_UNUSED static const jit_gpr_t T4_OR_SP = JIT_R0; ^ jit.c:259:1: error: initializer element is not constant SCM_UNUSED static const jit_gpr_t T0_PRESERVED = JIT_V1; ^ jit.c:260:1: error: initializer element is not constant static const jit_gpr_t T1_PRESERVED = JIT_V2; ^ jit.c:974:1: warning: 'sp_u64_operand' defined but not used [-Wunused-function] sp_u64_operand (scm_jit_state *j, uint32_t slot) ^ jit.c:1028:1: warning: 'sp_s32_operand' defined but not used [-Wunused-function] sp_s32_operand (scm_jit_state *j, uint32_t src) ^ Makefile:3126: recipe for target 'libguile_3.0_la-jit.lo' failed make[3]: *** [libguile_3.0_la-jit.lo] Error 1 CC libguile_3.0_la-keywords.lo CC libguile_3.0_la-list.lo CC libguile_3.0_la-load.lo CC libguile_3.0_la-loader.lo CC libguile_3.0_la-macros.lo CC libguile_3.0_la-mallocs.lo CC libguile_3.0_la-memoize.lo CC libguile_3.0_la-modules.lo CC libguile_3.0_la-null-threads.lo CC libguile_3.0_la-numbers.lo CC libguile_3.0_la-objprop.lo CC libguile_3.0_la-options.lo CC libguile_3.0_la-pairs.lo CC libguile_3.0_la-poll.lo CC libguile_3.0_la-ports.lo CC libguile_3.0_la-print.lo CC libguile_3.0_la-procprop.lo CC libguile_3.0_la-procs.lo CC libguile_3.0_la-programs.lo CC libguile_3.0_la-promises.lo CC libguile_3.0_la-r6rs-ports.lo CC libguile_3.0_la-random.lo CC libguile_3.0_la-rdelim.lo CC libguile_3.0_la-read.lo CC libguile_3.0_la-rw.lo CC libguile_3.0_la-scmsigs.lo CC libguile_3.0_la-script.lo CC libguile_3.0_la-simpos.lo CC libguile_3.0_la-smob.lo CC libguile_3.0_la-sort.lo CC libguile_3.0_la-srcprop.lo CC libguile_3.0_la-srfi-1.lo CC libguile_3.0_la-srfi-4.lo CC libguile_3.0_la-srfi-13.lo CC libguile_3.0_la-srfi-14.lo CC libguile_3.0_la-srfi-60.lo CC libguile_3.0_la-stackchk.lo CC libguile_3.0_la-stacks.lo CC libguile_3.0_la-stime.lo CC libguile_3.0_la-strings.lo CC libguile_3.0_la-strorder.lo CC libguile_3.0_la-strports.lo CC libguile_3.0_la-struct.lo CC libguile_3.0_la-symbols.lo CC libguile_3.0_la-syntax.lo CC libguile_3.0_la-threads.lo CC libguile_3.0_la-throw.lo CC libguile_3.0_la-trees.lo CC libguile_3.0_la-unicode.lo CC libguile_3.0_la-uniform.lo CC libguile_3.0_la-values.lo CC libguile_3.0_la-variable.lo CC libguile_3.0_la-vectors.lo CC libguile_3.0_la-version.lo CC libguile_3.0_la-vm.lo In file included from ../libguile/pairs.h:26:0, from alist.h:26, from vm.c:38: vm-engine.c: In function 'vm_regular_engine':
Re: GNU Guile 2.9.9 Released [beta]
Note that the problem I have is that procedure-property and hash-table code with procedure key's fail on me due to the fact that the identity of functions varies in a non clear way. On Mon, Jan 13, 2020 at 10:32 PM Stefan Israelsson Tampe < stefan.ita...@gmail.com> wrote: > Nice, but I think we are not there yet. > > In current guile (eq? f f) = #f for a procedure f. Try: > > (define-module (b) > #:export (f)) > > (define (g x) x) > (define (u x) g) > (define (f x) > (pk eq?(eq? g (u x))) > (pk eqv? (eqv? g (u x))) > (pk equal? (equal? g (u x))) > (pk (object-address g) (object-address (u x > > scheme@(guile-user)> (use-modules (b)) > ;;; note: source file /home/stis/b.scm > ;;; newer than compiled > /home/stis/.cache/guile/ccache/3.0-LE-8-4.2/home/stis/ > b.scm.go > ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0 > ;;; or pass the --no-auto-compile argument to disable. > ;;; compiling /home/stis/b.scm > ;;; compiled > /home/stis/.cache/guile/ccache/3.0-LE-8-4.2/home/stis/b.scm.go > scheme@(guile-user)> (f 1) > > ;;; (# #f) > > ;;; (# #f) > > ;;; (# #f) > > ;;; (139824931374184 139824931374200) > > > On Mon, Jan 13, 2020 at 9:39 AM Andy Wingo wrote: > >> We are pleased to announce GNU Guile release 2.9.9. This is the ninfth >> and probably final pre-release of what will eventually become the 3.0 >> release series. >> >> Compared to the current stable series (2.2.x), the future Guile 3.0 adds >> support for just-in-time native code generation, speeding up all Guile >> programs. See the NEWS extract at the end of the mail for full details. >> >> Compared to the previous prerelease (2.9.7), Guile 2.9.8 fixes a number >> of bugs. >> >> The current plan is to make a 3.0.0 final release on 17 January 2020. >> If there's nothing wrong with this prerelease, 3.0.0 will be essentially >> identical to 2.9.9. With that in mind, please test and make sure the >> release works on your platform! Please send any build reports (success >> or failure) to guile-de...@gnu.org, along with platform details. You >> can file a bug by sending mail to bug-gu...@gnu.org. >> >> The Guile web page is located at http://gnu.org/software/guile/, and >> among other things, it contains a copy of the Guile manual and pointers >> to more resources. >> >> Guile is an implementation of the Scheme programming language, packaged >> for use in a wide variety of environments. In addition to implementing >> the R5RS, R6RS, and R7RS Scheme standards, Guile includes a module >> system, full access to POSIX system calls, networking support, multiple >> threads, dynamic linking, a foreign function call interface, powerful >> string processing, and HTTP client and server implementations. >> >> Guile can run interactively, as a script interpreter, and as a Scheme >> compiler to VM bytecode. It is also packaged as a library so that >> applications can easily incorporate a complete Scheme interpreter/VM. >> An application can use Guile as an extension language, a clean and >> powerful configuration language, or as multi-purpose "glue" to connect >> primitives provided by the application. It is easy to call Scheme code >> From C code and vice versa. Applications can add new functions, data >> types, control structures, and even syntax to Guile, to create a >> domain-specific language tailored to the task at hand. >> >> Guile 2.9.9 can be installed in parallel with Guile 2.2.x; see >> >> http://www.gnu.org/software/guile/manual/html_node/Parallel-Installations.html >> . >> >> A more detailed NEWS summary follows these details on how to get the >> Guile sources. >> >> Here are the compressed sources: >> http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.lz (10MB) >> http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.xz (12MB) >> http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.gz (21MB) >> >> Here are the GPG detached signatures[*]: >> http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.lz.sig >> http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.xz.sig >> http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.gz.sig >> >> Use a mirror for higher download bandwidth: >> http://www.gnu.org/order/ftp.html >> >> Here are the SHA256 checksums: >> >> 59f136e5db36eba070cc5e68784e632dc2beae4b21fd6c7c8ed2c598cc992efc >> guile-2.9.9.tar.lz >> bf71920cfa23e59fc6257bee84ef4dfeccf4f03e96bb8205592e09f9dbff2969 >> guile-2.9.9.tar.xz >> eafe394cf99d9dd1ab837e6d1b9b2b8d9f0cd13bc34e64ca92456ce1bc2b1925 >> guile-2.9.9.tar.gz >> >> [*] Use a .sig file to verify that the corresponding file (without the >> .sig suffix) is intact. First, be sure to download both the .sig file >> and the corresponding tarball. Then, run a command like this: >> >> gpg --verify guile-2.9.9.tar.gz.sig >> >> If that command fails because you don't have the required public key, >> then run this command to import it: >> >> gpg --keyserver keys.gnupg.net --recv-keys >> 4FD4D288D445934E0A14F9A5A8803732E4436885 >> >> and rerun the 'gpg
Re: GNU Guile 2.9.9 Released [beta]
I mean that this bug is for 2.9.9 On Mon, Jan 13, 2020 at 10:32 PM Stefan Israelsson Tampe < stefan.ita...@gmail.com> wrote: > Nice, but I think we are not there yet. > > In current guile (eq? f f) = #f for a procedure f. Try: > > (define-module (b) > #:export (f)) > > (define (g x) x) > (define (u x) g) > (define (f x) > (pk eq?(eq? g (u x))) > (pk eqv? (eqv? g (u x))) > (pk equal? (equal? g (u x))) > (pk (object-address g) (object-address (u x > > scheme@(guile-user)> (use-modules (b)) > ;;; note: source file /home/stis/b.scm > ;;; newer than compiled > /home/stis/.cache/guile/ccache/3.0-LE-8-4.2/home/stis/ > b.scm.go > ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0 > ;;; or pass the --no-auto-compile argument to disable. > ;;; compiling /home/stis/b.scm > ;;; compiled > /home/stis/.cache/guile/ccache/3.0-LE-8-4.2/home/stis/b.scm.go > scheme@(guile-user)> (f 1) > > ;;; (# #f) > > ;;; (# #f) > > ;;; (# #f) > > ;;; (139824931374184 139824931374200) > > > On Mon, Jan 13, 2020 at 9:39 AM Andy Wingo wrote: > >> We are pleased to announce GNU Guile release 2.9.9. This is the ninfth >> and probably final pre-release of what will eventually become the 3.0 >> release series. >> >> Compared to the current stable series (2.2.x), the future Guile 3.0 adds >> support for just-in-time native code generation, speeding up all Guile >> programs. See the NEWS extract at the end of the mail for full details. >> >> Compared to the previous prerelease (2.9.7), Guile 2.9.8 fixes a number >> of bugs. >> >> The current plan is to make a 3.0.0 final release on 17 January 2020. >> If there's nothing wrong with this prerelease, 3.0.0 will be essentially >> identical to 2.9.9. With that in mind, please test and make sure the >> release works on your platform! Please send any build reports (success >> or failure) to guile-de...@gnu.org, along with platform details. You >> can file a bug by sending mail to bug-gu...@gnu.org. >> >> The Guile web page is located at http://gnu.org/software/guile/, and >> among other things, it contains a copy of the Guile manual and pointers >> to more resources. >> >> Guile is an implementation of the Scheme programming language, packaged >> for use in a wide variety of environments. In addition to implementing >> the R5RS, R6RS, and R7RS Scheme standards, Guile includes a module >> system, full access to POSIX system calls, networking support, multiple >> threads, dynamic linking, a foreign function call interface, powerful >> string processing, and HTTP client and server implementations. >> >> Guile can run interactively, as a script interpreter, and as a Scheme >> compiler to VM bytecode. It is also packaged as a library so that >> applications can easily incorporate a complete Scheme interpreter/VM. >> An application can use Guile as an extension language, a clean and >> powerful configuration language, or as multi-purpose "glue" to connect >> primitives provided by the application. It is easy to call Scheme code >> From C code and vice versa. Applications can add new functions, data >> types, control structures, and even syntax to Guile, to create a >> domain-specific language tailored to the task at hand. >> >> Guile 2.9.9 can be installed in parallel with Guile 2.2.x; see >> >> http://www.gnu.org/software/guile/manual/html_node/Parallel-Installations.html >> . >> >> A more detailed NEWS summary follows these details on how to get the >> Guile sources. >> >> Here are the compressed sources: >> http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.lz (10MB) >> http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.xz (12MB) >> http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.gz (21MB) >> >> Here are the GPG detached signatures[*]: >> http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.lz.sig >> http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.xz.sig >> http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.gz.sig >> >> Use a mirror for higher download bandwidth: >> http://www.gnu.org/order/ftp.html >> >> Here are the SHA256 checksums: >> >> 59f136e5db36eba070cc5e68784e632dc2beae4b21fd6c7c8ed2c598cc992efc >> guile-2.9.9.tar.lz >> bf71920cfa23e59fc6257bee84ef4dfeccf4f03e96bb8205592e09f9dbff2969 >> guile-2.9.9.tar.xz >> eafe394cf99d9dd1ab837e6d1b9b2b8d9f0cd13bc34e64ca92456ce1bc2b1925 >> guile-2.9.9.tar.gz >> >> [*] Use a .sig file to verify that the corresponding file (without the >> .sig suffix) is intact. First, be sure to download both the .sig file >> and the corresponding tarball. Then, run a command like this: >> >> gpg --verify guile-2.9.9.tar.gz.sig >> >> If that command fails because you don't have the required public key, >> then run this command to import it: >> >> gpg --keyserver keys.gnupg.net --recv-keys >> 4FD4D288D445934E0A14F9A5A8803732E4436885 >> >> and rerun the 'gpg --verify' command. >> >> This release was bootstrapped with the following tools: >> Autoconf 2.69 >> Automake 1.16.1 >> Libtool 2.4.6 >> Gnulib
Re: GNU Guile 2.9.9 Released [beta]
Nice, but I think we are not there yet. In current guile (eq? f f) = #f for a procedure f. Try: (define-module (b) #:export (f)) (define (g x) x) (define (u x) g) (define (f x) (pk eq?(eq? g (u x))) (pk eqv? (eqv? g (u x))) (pk equal? (equal? g (u x))) (pk (object-address g) (object-address (u x scheme@(guile-user)> (use-modules (b)) ;;; note: source file /home/stis/b.scm ;;; newer than compiled /home/stis/.cache/guile/ccache/3.0-LE-8-4.2/home/stis/ b.scm.go ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0 ;;; or pass the --no-auto-compile argument to disable. ;;; compiling /home/stis/b.scm ;;; compiled /home/stis/.cache/guile/ccache/3.0-LE-8-4.2/home/stis/b.scm.go scheme@(guile-user)> (f 1) ;;; (# #f) ;;; (# #f) ;;; (# #f) ;;; (139824931374184 139824931374200) On Mon, Jan 13, 2020 at 9:39 AM Andy Wingo wrote: > We are pleased to announce GNU Guile release 2.9.9. This is the ninfth > and probably final pre-release of what will eventually become the 3.0 > release series. > > Compared to the current stable series (2.2.x), the future Guile 3.0 adds > support for just-in-time native code generation, speeding up all Guile > programs. See the NEWS extract at the end of the mail for full details. > > Compared to the previous prerelease (2.9.7), Guile 2.9.8 fixes a number > of bugs. > > The current plan is to make a 3.0.0 final release on 17 January 2020. > If there's nothing wrong with this prerelease, 3.0.0 will be essentially > identical to 2.9.9. With that in mind, please test and make sure the > release works on your platform! Please send any build reports (success > or failure) to guile-de...@gnu.org, along with platform details. You > can file a bug by sending mail to bug-gu...@gnu.org. > > The Guile web page is located at http://gnu.org/software/guile/, and > among other things, it contains a copy of the Guile manual and pointers > to more resources. > > Guile is an implementation of the Scheme programming language, packaged > for use in a wide variety of environments. In addition to implementing > the R5RS, R6RS, and R7RS Scheme standards, Guile includes a module > system, full access to POSIX system calls, networking support, multiple > threads, dynamic linking, a foreign function call interface, powerful > string processing, and HTTP client and server implementations. > > Guile can run interactively, as a script interpreter, and as a Scheme > compiler to VM bytecode. It is also packaged as a library so that > applications can easily incorporate a complete Scheme interpreter/VM. > An application can use Guile as an extension language, a clean and > powerful configuration language, or as multi-purpose "glue" to connect > primitives provided by the application. It is easy to call Scheme code > From C code and vice versa. Applications can add new functions, data > types, control structures, and even syntax to Guile, to create a > domain-specific language tailored to the task at hand. > > Guile 2.9.9 can be installed in parallel with Guile 2.2.x; see > > http://www.gnu.org/software/guile/manual/html_node/Parallel-Installations.html > . > > A more detailed NEWS summary follows these details on how to get the > Guile sources. > > Here are the compressed sources: > http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.lz (10MB) > http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.xz (12MB) > http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.gz (21MB) > > Here are the GPG detached signatures[*]: > http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.lz.sig > http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.xz.sig > http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.gz.sig > > Use a mirror for higher download bandwidth: > http://www.gnu.org/order/ftp.html > > Here are the SHA256 checksums: > > 59f136e5db36eba070cc5e68784e632dc2beae4b21fd6c7c8ed2c598cc992efc > guile-2.9.9.tar.lz > bf71920cfa23e59fc6257bee84ef4dfeccf4f03e96bb8205592e09f9dbff2969 > guile-2.9.9.tar.xz > eafe394cf99d9dd1ab837e6d1b9b2b8d9f0cd13bc34e64ca92456ce1bc2b1925 > guile-2.9.9.tar.gz > > [*] Use a .sig file to verify that the corresponding file (without the > .sig suffix) is intact. First, be sure to download both the .sig file > and the corresponding tarball. Then, run a command like this: > > gpg --verify guile-2.9.9.tar.gz.sig > > If that command fails because you don't have the required public key, > then run this command to import it: > > gpg --keyserver keys.gnupg.net --recv-keys > 4FD4D288D445934E0A14F9A5A8803732E4436885 > > and rerun the 'gpg --verify' command. > > This release was bootstrapped with the following tools: > Autoconf 2.69 > Automake 1.16.1 > Libtool 2.4.6 > Gnulib v0.1-1157-gb03f418 > Makeinfo 6.7 > > An extract from NEWS follows. > > > Changes since alpha 2.9.8 (since 2.9.7): > > * Notable changes > > ** `define-module' #:autoload no longer pulls in the whole module > > One of the ways that a module can use another is "autoloads". For >
Re: GNU Guile 2.9.9 Released [beta]
I am already super excited about Guile 3.0.0 and JIT. I've not had to complain about Guile's speed so far and there are low-level things like using integers as bits to enable high performance things, but hey, if simply by upgrading to a new version most Guile programs run faster, that's great! I've also steadily discovered new corners of the language as in: "Oh there already is a library for that!" (for example fibers library or futures and parallel forms) or "Oh wow, I can go so low-level with that and still have high level language features and abstractions!" (for example with using integers as bits, for my attempt of writing a chess engine) or "Ah, that's how I should use it!" (for example with R6RS exception handling (conditions)). So I am looking forward to learning more about Guile and see it being used in more scenarios in the future. Thanks for keeping up the good work and thanks for everyone contributing to the Guile ecosystem, Zelphir On 1/13/20 9:39 AM, Andy Wingo wrote: > We are pleased to announce GNU Guile release 2.9.9. This is the ninfth > and probably final pre-release of what will eventually become the 3.0 > release series. > > Compared to the current stable series (2.2.x), the future Guile 3.0 adds > support for just-in-time native code generation, speeding up all Guile > programs. See the NEWS extract at the end of the mail for full details. > > Compared to the previous prerelease (2.9.7), Guile 2.9.8 fixes a number > of bugs. > > The current plan is to make a 3.0.0 final release on 17 January 2020. > If there's nothing wrong with this prerelease, 3.0.0 will be essentially > identical to 2.9.9. With that in mind, please test and make sure the > release works on your platform! Please send any build reports (success > or failure) to guile-de...@gnu.org, along with platform details. You > can file a bug by sending mail to bug-gu...@gnu.org. > > The Guile web page is located at http://gnu.org/software/guile/, and > among other things, it contains a copy of the Guile manual and pointers > to more resources. > > Guile is an implementation of the Scheme programming language, packaged > for use in a wide variety of environments. In addition to implementing > the R5RS, R6RS, and R7RS Scheme standards, Guile includes a module > system, full access to POSIX system calls, networking support, multiple > threads, dynamic linking, a foreign function call interface, powerful > string processing, and HTTP client and server implementations. > > Guile can run interactively, as a script interpreter, and as a Scheme > compiler to VM bytecode. It is also packaged as a library so that > applications can easily incorporate a complete Scheme interpreter/VM. > An application can use Guile as an extension language, a clean and > powerful configuration language, or as multi-purpose "glue" to connect > primitives provided by the application. It is easy to call Scheme code > From C code and vice versa. Applications can add new functions, data > types, control structures, and even syntax to Guile, to create a > domain-specific language tailored to the task at hand. > > Guile 2.9.9 can be installed in parallel with Guile 2.2.x; see > http://www.gnu.org/software/guile/manual/html_node/Parallel-Installations.html. > > A more detailed NEWS summary follows these details on how to get the > Guile sources. > > Here are the compressed sources: > http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.lz (10MB) > http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.xz (12MB) > http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.gz (21MB) > > Here are the GPG detached signatures[*]: > http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.lz.sig > http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.xz.sig > http://alpha.gnu.org/gnu/guile/guile-2.9.9.tar.gz.sig > > Use a mirror for higher download bandwidth: > http://www.gnu.org/order/ftp.html > > Here are the SHA256 checksums: > > 59f136e5db36eba070cc5e68784e632dc2beae4b21fd6c7c8ed2c598cc992efc > guile-2.9.9.tar.lz > bf71920cfa23e59fc6257bee84ef4dfeccf4f03e96bb8205592e09f9dbff2969 > guile-2.9.9.tar.xz > eafe394cf99d9dd1ab837e6d1b9b2b8d9f0cd13bc34e64ca92456ce1bc2b1925 > guile-2.9.9.tar.gz > > [*] Use a .sig file to verify that the corresponding file (without the > .sig suffix) is intact. First, be sure to download both the .sig file > and the corresponding tarball. Then, run a command like this: > > gpg --verify guile-2.9.9.tar.gz.sig > > If that command fails because you don't have the required public key, > then run this command to import it: > > gpg --keyserver keys.gnupg.net --recv-keys > 4FD4D288D445934E0A14F9A5A8803732E4436885 > > and rerun the 'gpg --verify' command. > > This release was bootstrapped with the following tools: > Autoconf 2.69 > Automake 1.16.1 > Libtool 2.4.6 > Gnulib v0.1-1157-gb03f418 > Makeinfo 6.7 > > An extract from NEWS follows. > > > Changes since alpha 2.9.8 (since 2.9.7): > > * Notable changes > > ** `define-module'
Re: GNU Guile 2.9.9 Released [beta]
On Mon 13 Jan 2020 09:39, Andy Wingo writes: > Compared to the previous prerelease (2.9.7), Guile 2.9.8 fixes a number > of bugs. Obviously this was meant to be 2.9.9 versus 2.9.8 :) > Changes since alpha 2.9.8 (since 2.9.7): Here too :)