unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
* 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
  0 siblings, 1 reply; 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

* Re: 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
  2022-10-01 14:14       ` Jean Abou Samra
  0 siblings, 1 reply; 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

* Re: bug#58109: simple-format vs (ice-9 format) bug in 3.0.7?
  2022-10-01 13:40     ` bug#58109: " Ludovic Courtès
@ 2022-10-01 14:14       ` Jean Abou Samra
  2022-10-12 20:50         ` Ludovic Courtès
  0 siblings, 1 reply; 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

* Re: bug#58109: simple-format vs (ice-9 format) bug in 3.0.7?
  2022-10-01 14:14       ` Jean Abou Samra
@ 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
2022-10-01 14:14       ` Jean Abou Samra
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).