* bug#58109: simple-format vs (ice-9 format) bug in 3.0.7? @ 2022-09-27 10:23 Christopher Lam 2022-09-27 10:35 ` Jean Abou Samra 0 siblings, 1 reply; 6+ messages in thread From: Christopher Lam @ 2022-09-27 10:23 UTC (permalink / raw) To: 58109, guile-devel [-- Attachment #1: Type: text/plain, Size: 1515 bytes --] Hi guilers, here's a short bash session. Why would the first bash call to "guile s.scm" work, but not the second one? guile-3.0.7 on ubuntu. ============================ $ cat s.scm (format #t "~f\n" 2.5) $ guile s.scm ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0 ;;; or pass the --no-auto-compile argument to disable. ;;; compiling /home/chris/s.scm ;;; compiled /home/chris/.cache/guile/ccache/3.0-LE-8-4.5/home/chris/s.scm.go 2.5 $ guile s.scm Backtrace: In ice-9/boot-9.scm: 1752:10 6 (with-exception-handler _ _ #:unwind? _ # _) In unknown file: 5 (apply-smob/0 #<thunk 7efd190d5540>) In ice-9/boot-9.scm: 724:2 4 (call-with-prompt ("prompt") #<procedure 7efd190e5760 …> …) In ice-9/eval.scm: 619:8 3 (_ #(#(#<directory (guile-user) 7efd190d9c80>))) In ice-9/boot-9.scm: 2835:4 2 (save-module-excursion #<procedure 7efd190c9150 at ice-…>) 4380:12 1 (_) In unknown file: 0 (simple-format #t "~f\n" 2.5) ERROR: In procedure simple-format: In procedure simple-format: FORMAT: Unsupported format option ~f - use (ice-9 format) instead $ guile --version guile (GNU Guile) 3.0.7 Packaged by Debian (3.0.7-deb+3.0.7-1) Copyright (C) 2021 Free Software Foundation, Inc. License LGPLv3+: GNU LGPL 3 or later <http://gnu.org/licenses/lgpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. ============================ [-- Attachment #2: Type: text/html, Size: 1854 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#58109: simple-format vs (ice-9 format) bug in 3.0.7? 2022-09-27 10:23 bug#58109: simple-format vs (ice-9 format) bug in 3.0.7? Christopher Lam @ 2022-09-27 10:35 ` Jean Abou Samra 2022-09-27 10:38 ` Jean Abou Samra 0 siblings, 1 reply; 6+ messages in thread From: Jean Abou Samra @ 2022-09-27 10:35 UTC (permalink / raw) To: christopher.lck, 58109, guile-devel Le 27/09/2022 à 12:23, Christopher Lam a écrit : > Hi guilers, here's a short bash session. > Why would the first bash call to "guile s.scm" work, but not the > second one? > guile-3.0.7 on ubuntu. > This is a duplicate of https://debbugs.gnu.org/cgi/bugreport.cgi?bug=50059 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: simple-format vs (ice-9 format) bug in 3.0.7? 2022-09-27 10:35 ` Jean Abou Samra @ 2022-09-27 10:38 ` Jean Abou Samra 2022-10-01 13:40 ` bug#58109: " Ludovic Courtès [not found] ` <87ill3fyrh.fsf@gnu.org> 0 siblings, 2 replies; 6+ messages in thread From: Jean Abou Samra @ 2022-09-27 10:38 UTC (permalink / raw) To: Christopher Lam, bug-guile, guile-devel Le 27/09/2022 à 12:35, Jean Abou Samra a écrit : > > > Le 27/09/2022 à 12:23, Christopher Lam a écrit : >> Hi guilers, here's a short bash session. >> Why would the first bash call to "guile s.scm" work, but not the >> second one? >> guile-3.0.7 on ubuntu. >> > > > This is a duplicate of > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=50059 > Uh, at the end of module/ice-9/format.scm, there is ;; Thanks to Shuji Narazaki (module-set! the-root-module 'format format) which dates back to commit 14469b7c69feb0f2c5b8a093f19fe2a548b31c5b Author: Greg J. Badros <gjb@cs.washington.edu> Date: Thu Jan 20 20:58:30 2000 +0000 * format.scm: Use (variable-set! (builtin-variable 'format)) to re-define format to be format:format (instead of just define, which interacts poorly with the module system). Thanks to Shuji Narazaki for this change. diff --git a/ice-9/format.scm b/ice-9/format.scm index fce2737ce..40f20b3da 100644 --- a/ice-9/format.scm +++ b/ice-9/format.scm @@ -1670,7 +1670,9 @@ (define format:abort (lambda () (error "error in format"))) -(define format format:format) +;;(define format format:format) +;; Thanks to Shuji Narazaki +(variable-set! (builtin-variable 'format) format:format) ;; If this is not possible then a continuation is used to recover ;; properly from a format error. In this case format returns #f. This probably predates #:replace and could be removed now, right? ^ permalink raw reply related [flat|nested] 6+ messages in thread
* bug#58109: simple-format vs (ice-9 format) bug in 3.0.7? 2022-09-27 10:38 ` Jean Abou Samra @ 2022-10-01 13:40 ` Ludovic Courtès [not found] ` <87ill3fyrh.fsf@gnu.org> 1 sibling, 0 replies; 6+ messages in thread From: Ludovic Courtès @ 2022-10-01 13:40 UTC (permalink / raw) To: Jean Abou Samra; +Cc: christopher.lck, 58109, guile-devel Hi, Jean Abou Samra <jean@abou-samra.fr> skribis: > Uh, at the end of module/ice-9/format.scm, there is > > ;; Thanks to Shuji Narazaki > (module-set! the-root-module 'format format) > > which dates back to > > commit 14469b7c69feb0f2c5b8a093f19fe2a548b31c5b > Author: Greg J. Badros <gjb@cs.washington.edu> > Date: Thu Jan 20 20:58:30 2000 +0000 [...] > This probably predates #:replace and could be removed now, right? Yes, it could be removed, but probably not before the 4.0 series. The ‘-Wformat’ warning introduced sometime in the 2.0 or 2.2 series prepared for that removal by warning about simple-format/format mismatches, but there’s probably still code out there that assumes ‘format’ is the full-blown ‘format’, even when (ice-9 format) is not explicitly imported. Thanks, Ludo’. ^ permalink raw reply [flat|nested] 6+ messages in thread
[parent not found: <87ill3fyrh.fsf@gnu.org>]
* bug#58109: simple-format vs (ice-9 format) bug in 3.0.7? [not found] ` <87ill3fyrh.fsf@gnu.org> @ 2022-10-01 14:14 ` Jean Abou Samra [not found] ` <cc81cf8f-86f5-f350-cab5-e090ade1cbc7@abou-samra.fr> 1 sibling, 0 replies; 6+ messages in thread From: Jean Abou Samra @ 2022-10-01 14:14 UTC (permalink / raw) To: Ludovic Courtès; +Cc: christopher.lck, 58109, guile-devel Le 01/10/2022 à 15:40, Ludovic Courtès a écrit : > Hi, > > Jean Abou Samra <jean@abou-samra.fr> skribis: > >> Uh, at the end of module/ice-9/format.scm, there is >> >> ;; Thanks to Shuji Narazaki >> (module-set! the-root-module 'format format) >> >> which dates back to >> >> commit 14469b7c69feb0f2c5b8a093f19fe2a548b31c5b >> Author: Greg J. Badros <gjb@cs.washington.edu> >> Date: Thu Jan 20 20:58:30 2000 +0000 > [...] > >> This probably predates #:replace and could be removed now, right? > Yes, it could be removed, but probably not before the 4.0 series. > > The ‘-Wformat’ warning introduced sometime in the 2.0 or 2.2 series > prepared for that removal by warning about simple-format/format > mismatches, but there’s probably still code out there that assumes > ‘format’ is the full-blown ‘format’, even when (ice-9 format) is not > explicitly imported. OK, understood. How about adding comments and documentation? diff --git a/doc/ref/misc-modules.texi b/doc/ref/misc-modules.texi index 6c899a905..2c00ed859 100644 --- a/doc/ref/misc-modules.texi +++ b/doc/ref/misc-modules.texi @@ -1122,6 +1122,13 @@ you try to use one of them. The reason for two versions is that the full @code{format} is fairly large and requires some time to load. @code{simple-format} is often adequate too. +Beware that when @code{(ice-9 format)} is loaded, it replaces the +binding for @code{format} on the toplevel. If your module loads +another module that loads @code{(ice-9 format)}, then your module +will see the @code{format} function from @code{(ice-9 format)}, +even if it does not itself import @code{(ice-9 format)}. This is +legacy behavior and may be removed in a future Guile version. + @node File Tree Walk @section File Tree Walk diff --git a/module/ice-9/format.scm b/module/ice-9/format.scm index ee7cba910..026fd9b54 100644 --- a/module/ice-9/format.scm +++ b/module/ice-9/format.scm @@ -32,6 +32,8 @@ (define-module (ice-9 format) #:autoload (ice-9 pretty-print) (pretty-print truncated-print) #:autoload (ice-9 i18n) (%global-locale number->locale-string) + ;; Actually replaces the global format as soon as loaded; see the end + ;; of this file. #:replace (format)) (define format:version "3.0") @@ -83,7 +85,7 @@ ;; format's user error handler (define (format-error . args) ; never returns! - (with-throw-handler #t + (with-throw-handler #t (lambda () (let ((port (current-error-port))) (unless (zero? %arg-pos) @@ -1560,5 +1562,10 @@ (close-port port) str))))) -;; Thanks to Shuji Narazaki +;; Set the format variable in the root module. This is legacy and +;; no longer necessary. It means that as soon as (ice-9 format) is +;; loaded somewhere by some module, the predefined binding for format +;; becomes the extended format function, even in modules where (ice-9 format) +;; isn't imported. Because of this, removing this line should be done +;; when a backwards compatibility break is allowed. (module-set! the-root-module 'format format) Best, Jean ^ permalink raw reply related [flat|nested] 6+ messages in thread
[parent not found: <cc81cf8f-86f5-f350-cab5-e090ade1cbc7@abou-samra.fr>]
* bug#58109: simple-format vs (ice-9 format) bug in 3.0.7? [not found] ` <cc81cf8f-86f5-f350-cab5-e090ade1cbc7@abou-samra.fr> @ 2022-10-12 20:50 ` Ludovic Courtès 0 siblings, 0 replies; 6+ messages in thread From: Ludovic Courtès @ 2022-10-12 20:50 UTC (permalink / raw) To: Jean Abou Samra; +Cc: christopher.lck, 58109-done, guile-devel Hi, Jean Abou Samra <jean@abou-samra.fr> skribis: > OK, understood. How about adding comments and documentation? That’s a good idea. Applied with minor tweaks and a commit log. Thanks! Ludo’. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2022-10-12 20:50 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-09-27 10:23 bug#58109: simple-format vs (ice-9 format) bug in 3.0.7? Christopher Lam 2022-09-27 10:35 ` Jean Abou Samra 2022-09-27 10:38 ` Jean Abou Samra 2022-10-01 13:40 ` bug#58109: " Ludovic Courtès [not found] ` <87ill3fyrh.fsf@gnu.org> 2022-10-01 14:14 ` Jean Abou Samra [not found] ` <cc81cf8f-86f5-f350-cab5-e090ade1cbc7@abou-samra.fr> 2022-10-12 20:50 ` Ludovic Courtès
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).