unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
* 1.6.8 release candidate 0 available for testing.
@ 2005-10-15 20:55 Rob Browning
  2005-10-16 21:02 ` Greg Troxel
  0 siblings, 1 reply; 13+ messages in thread
From: Rob Browning @ 2005-10-15 20:55 UTC (permalink / raw)



For now it's available here:

  http://people.debian.org/~rlb/tmp/guile-1.6.8-rc0.tar.gz

Please test.  This file isn't likely to become the actual release, but
it's probably close.

Thanks
-- 
Rob Browning
rlb @defaultvalue.org and @debian.org; previously @cs.utexas.edu
GPG starting 2002-11-03 = 14DD 432F AE39 534D B592  F9A0 25C8 D377 8C7E 73A4


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 1.6.8 release candidate 0 available for testing.
  2005-10-15 20:55 1.6.8 release candidate 0 available for testing Rob Browning
@ 2005-10-16 21:02 ` Greg Troxel
  2005-10-16 22:38   ` Kevin Ryde
  0 siblings, 1 reply; 13+ messages in thread
From: Greg Troxel @ 2005-10-16 21:02 UTC (permalink / raw)
  Cc: guile-devel

This builds on NetBSD/i386 3.99.9, and almost passes make check,
except for:

FAIL: time.test: strftime %Z doesn't return garbage

I renamed the distfile to avoid fighting the package system (the
1.6.8-rc0 could be 1.6.8rc0 to make it more clearly part of the
version, but I'm not sure that's it).

With the patches in NetBSD pkgsrc, the built/installed guile worked,
where works means that I used guile-pg, guile-gnome, and a private ospf
lsa access library via a guile wrapper.

The two patches I sent in private mail are not yet in your rc tarball,
but probably should be.

Thanks for making the tarball.

-- 

        Greg Troxel <gdt@ir.bbn.com>


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 1.6.8 release candidate 0 available for testing.
  2005-10-16 21:02 ` Greg Troxel
@ 2005-10-16 22:38   ` Kevin Ryde
  2005-10-18 19:53     ` Greg Troxel
  0 siblings, 1 reply; 13+ messages in thread
From: Kevin Ryde @ 2005-10-16 22:38 UTC (permalink / raw)
  Cc: guile-devel, Rob Browning

Greg Troxel <gdt@ir.bbn.com> writes:
>
> This builds on NetBSD/i386 3.99.9, and almost passes make check,
> except for:
>
> FAIL: time.test: strftime %Z doesn't return garbage

Can you pick out the code from that test to see what it does return?
(It's supposed to test that the timezone string passes straight
through.)


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 1.6.8 release candidate 0 available for testing.
  2005-10-16 22:38   ` Kevin Ryde
@ 2005-10-18 19:53     ` Greg Troxel
  2005-10-19  1:27       ` Kevin Ryde
                         ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Greg Troxel @ 2005-10-18 19:53 UTC (permalink / raw)
  Cc: guile-devel

Kevin Ryde <user42@zip.com.au> writes:

> Greg Troxel <gdt@ir.bbn.com> writes:
>
> > FAIL: time.test: strftime %Z doesn't return garbage
> 
> Can you pick out the code from that test to see what it does return?
> (It's supposed to test that the timezone string passes straight
> through.)

strftime of %Z returns "EST", which is the correct time zone for the
program given no TZ in environment and isdst zero.  Comments in the
NetBSD libc sources indicate that returning the current zone is
a legitimate response according to C99.

gdt 133 ~ > cat time.scm
(define t (localtime (current-time)))

(display t)
(display "\n")

(set-tm:zone t "UTC")
(set-tm:isdst t 0)

(display t)
(display "\n")

(display (strftime "%F %T %Z" t))
(display "\n")

gdt 132 ~ > guile -s time.scm
#(15 37 15 18 9 105 2 290 1 14400 EDT)
#(15 37 15 18 9 105 2 290 0 14400 UTC)
2005-10-18 15:37:15 EST

There's a buglet in the guile info docs in that strftime has a cross
reference to the libc info file, and that would seem to be Linux
specific.  The docs also don't state if strftime in scheme is supposed
to conform to C99, translated into Scheme, or something else.  I note
that the strftime source in libguile accomodates systems w/o a
timezone field.  NetBSD's struct tm has one, but doesn't use it in
strftime:

In src/lib/libc/time/strftime.c:

			case 'Z':
#ifdef TM_ZONE
				if (t->TM_ZONE != NULL)
					pt = _add(t->TM_ZONE, pt, ptlim);
				else
#endif /* defined TM_ZONE */
				if (t->tm_isdst >= 0)
					pt = _add(tzname[t->tm_isdst != 0],
						pt, ptlim);
				/*
				** C99 says that %Z must be replaced by the
				** empty string if the time zone is not
				** determinable.
				*/
				continue;


This code is this way because using tm_zone would violate ISO-C; gory
details at:

http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=21722

So, I respectfully suggest that the test is demanding more than one
can rightfully conclude from the documentation.
Perhaps libguile/strftime.c needs to not assume that strftime(3) will examine
fields not specified by the standard, or perhaps that Scheme strftime
should define what it does more precisely.  A problem here is that
guile uses a structure which is bigger than C89 says.

I didn't find C99 specs for strftime, so I don't know if programs are
required to set tm_zone before calling strftime.

It would be interesting to run the test program from the PR on Linux.

Anyway, this isn't a new issue and has nothing to do with 1.6.8; have
seen this before but never tracked it down.  So whether it changes or
not, it's not in the way of a 1.6.8 release.





-- 
        Greg Troxel <gdt@ir.bbn.com>


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 1.6.8 release candidate 0 available for testing.
  2005-10-18 19:53     ` Greg Troxel
@ 2005-10-19  1:27       ` Kevin Ryde
  2005-10-19 17:10         ` Greg Troxel
  2005-10-19  1:34       ` Kevin Ryde
  2005-10-23 22:41       ` Kevin Ryde
  2 siblings, 1 reply; 13+ messages in thread
From: Kevin Ryde @ 2005-10-19  1:27 UTC (permalink / raw)
  Cc: guile-devel, Rob Browning

[taking this bit separately]

Greg Troxel <gdt@ir.bbn.com> writes:
>
> There's a buglet in the guile info docs in that strftime has a cross
> reference to the libc info file, and that would seem to be Linux
> specific.

You mean gnu-specific of course, strftime probably doesn't go near the
kernel.  But in any case I don't think it's too terrible for a gnu
package to xref other gnu package.  I'll add "or see man 3 strftime",
if you like.


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 1.6.8 release candidate 0 available for testing.
  2005-10-18 19:53     ` Greg Troxel
  2005-10-19  1:27       ` Kevin Ryde
@ 2005-10-19  1:34       ` Kevin Ryde
  2005-10-19 17:18         ` Greg Troxel
  2005-10-23 22:41       ` Kevin Ryde
  2 siblings, 1 reply; 13+ messages in thread
From: Kevin Ryde @ 2005-10-19  1:34 UTC (permalink / raw)
  Cc: guile-devel, Rob Browning

Greg Troxel <gdt@ir.bbn.com> writes:
>
> I didn't find C99 specs for strftime, so I don't know if programs are
> required to set tm_zone before calling strftime.

The bit about %Z is

         %Z  is   replaced  by  the  locale's  time  zone  name  or
             abbreviation, or by no characters if no time  zone  is
             determinable.  [tm_isdst]

which I suppose is because struct tm is speced without tm_zone.

> So, I respectfully suggest that the test is demanding more than one
> can rightfully conclude from the documentation.

You'd think a system with tm_zone should use it, but yes no sense
demanding what doesn't work.

> Perhaps libguile/strftime.c needs to not assume that strftime(3) will examine
> fields not specified by the standard, or perhaps that Scheme strftime
> should define what it does more precisely.  A problem here is that
> guile uses a structure which is bigger than C89 says.

Since we initialize tm_zone if it exists we should be safe, but a note
in the docs about what guile tm:zone might or might not do could be in
order.


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 1.6.8 release candidate 0 available for testing.
  2005-10-19  1:27       ` Kevin Ryde
@ 2005-10-19 17:10         ` Greg Troxel
  2005-10-20  7:32           ` Ludovic Courtès
  0 siblings, 1 reply; 13+ messages in thread
From: Greg Troxel @ 2005-10-19 17:10 UTC (permalink / raw)
  Cc: guile-devel

Kevin Ryde <user42@zip.com.au> writes:

> > There's a buglet in the guile info docs in that strftime has a cross
> > reference to the libc info file, and that would seem to be Linux
> > specific.
> 
> You mean gnu-specific of course, strftime probably doesn't go near the
> kernel.  But in any case I don't think it's too terrible for a gnu
> package to xref other gnu package.  I'll add "or see man 3 strftime",
> if you like.

Sorry you are quite right, I should have said GNU libc (is that used
on other than Linux and HURD these days?).

In this case, GNU libc is not a requirement for guile, which runs on
free operating systems with GNU libc, free OS w/o GNU libc and
non-free OS.  The real reference is to the C99-specified strftime.  I
think what bothered me was the broken link in the info file since I do
not have GNU libc info files installed.  I tried to follow it, and
then realized it was a cross-file link.  So, sure, adding "or see
strftime(3)" would help.

-- 
        Greg Troxel <gdt@ir.bbn.com>


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 1.6.8 release candidate 0 available for testing.
  2005-10-19  1:34       ` Kevin Ryde
@ 2005-10-19 17:18         ` Greg Troxel
  2005-10-23 22:27           ` Kevin Ryde
  0 siblings, 1 reply; 13+ messages in thread
From: Greg Troxel @ 2005-10-19 17:18 UTC (permalink / raw)
  Cc: guile-devel

Kevin Ryde <user42@zip.com.au> writes:

> Greg Troxel <gdt@ir.bbn.com> writes:
>
> The bit about %Z is
> 
>          %Z  is   replaced  by  the  locale's  time  zone  name  or
>              abbreviation, or by no characters if no time  zone  is
>              determinable.  [tm_isdst]
> 
> which I suppose is because struct tm is speced without tm_zone.

Probably.  NetBSD libc uses the environment variable or /etc/localtime.

> You'd think a system with tm_zone should use it, but yes no sense
> demanding what doesn't work.

Yes, but the point (from the PR) is that a conforming program doesn't
have to set it, so libc reading it causes undefined behavior, and thus
libc can't read it.

> > Perhaps libguile/strftime.c needs to not assume that strftime(3)
> > will examine fields not specified by the standard, or perhaps that
> > Scheme strftime should define what it does more precisely.  A
> > problem here is that guile uses a structure which is bigger than
> > C89 says.
> 
> Since we initialize tm_zone if it exists we should be safe, but a note
> in the docs about what guile tm:zone might or might not do could be in
> order.

Sure, guile sets it.  Options I see are

1) declare the Scheme proc strftime has extended semantics beyond C99,
   document them, and make the implementation set TZ before calling
   strftime (perhaps unless an implementation which guarantees to read
   tm_zone is detected).

2) Document that the scheme proc strftime conforms, after langauge
   mapping, to C99, and point out that thus tm_zone is expected to be
   ignored because it isn't part of the standard.  Perhaps don't set
   the non-C99 fields in what is used for the libc call to avoid
   nonportable expectations.

The meta-issue I see here is about guile providing consistent behavior
on all platforms.  On some points it seems to do this, but it also at
times just wraps OS libraries.  One of the wins of guile is
portability, and I'd like to keep as much of that as possible.

-- 
        Greg Troxel <gdt@ir.bbn.com>


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 1.6.8 release candidate 0 available for testing.
  2005-10-19 17:10         ` Greg Troxel
@ 2005-10-20  7:32           ` Ludovic Courtès
  0 siblings, 0 replies; 13+ messages in thread
From: Ludovic Courtès @ 2005-10-20  7:32 UTC (permalink / raw)
  Cc: guile-devel

Hi,

Greg Troxel <gdt@ir.bbn.com> writes:

> Sorry you are quite right, I should have said GNU libc (is that used
> on other than Linux and HURD these days?).

Sure it is: GNU/kFreeBSD[0] and even...  GNU/NetBSD[1].  I know there
has been significant work on the former, don't know about the latter.

> In this case, GNU libc is not a requirement for guile, which runs on
> free operating systems with GNU libc, free OS w/o GNU libc and
> non-free OS.  The real reference is to the C99-specified strftime.  I
> think what bothered me was the broken link in the info file since I do
> not have GNU libc info files installed.  I tried to follow it, and
> then realized it was a cross-file link.  So, sure, adding "or see
> strftime(3)" would help.

Well, Guile is a GNU project after all, which is primarily meant to be
used on the GNU system, so I think it makes perfect sense to include
links to documentation of other GNU software.  However, adding a note
like the one you propose for non-GNU users might be a good idea too.

Thanks,
Ludovic.

[0] http://www.debian.org/ports/kfreebsd-gnu/
[1] http://www.debian.org/ports/netbsd/


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 1.6.8 release candidate 0 available for testing.
  2005-10-19 17:18         ` Greg Troxel
@ 2005-10-23 22:27           ` Kevin Ryde
  2005-10-25  1:29             ` Greg Troxel
  0 siblings, 1 reply; 13+ messages in thread
From: Kevin Ryde @ 2005-10-23 22:27 UTC (permalink / raw)
  Cc: guile-devel

Greg Troxel <gdt@ir.bbn.com> writes:
>
> 1) declare the Scheme proc strftime has extended semantics beyond C99,
>    document them,

Straight "pass through" to libc sounds good to me.

>    and make the implementation set TZ before calling
>    strftime (perhaps unless an implementation which guarantees to read
>    tm_zone is detected).

That might be slow.  I notice what localtime does changing TZ is a
noticable slowdown with glibc.  (It re-reads the timezone file(s) on
every TZ change.)

I wonder if munging the global tzname[] variable would be enough.  Bad
for multi-threading, but we've got issues with that in the time funcs
already.

>    Perhaps don't set
>    the non-C99 fields in what is used for the libc call to avoid
>    nonportable expectations.

I wouldn't deliberately break something just because it's not
portable.

> The meta-issue I see here is about guile providing consistent behavior
> on all platforms.

Though I see your point.


PS. I added "man 3 strftime" to the manual.


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 1.6.8 release candidate 0 available for testing.
  2005-10-18 19:53     ` Greg Troxel
  2005-10-19  1:27       ` Kevin Ryde
  2005-10-19  1:34       ` Kevin Ryde
@ 2005-10-23 22:41       ` Kevin Ryde
  2 siblings, 0 replies; 13+ messages in thread
From: Kevin Ryde @ 2005-10-23 22:41 UTC (permalink / raw)
  Cc: guile-devel, Rob Browning

Greg Troxel <gdt@ir.bbn.com> writes:
>
> strftime of %Z returns "EST", which is the correct time zone for the
> program given no TZ in environment and isdst zero.  Comments in the
> NetBSD libc sources indicate that returning the current zone is
> a legitimate response according to C99.

I disabled the guile test.

> It would be interesting to run the test program from the PR on Linux.

segv, which is I guess is the same as the PR says, a bug if you're
world is only c99.


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 1.6.8 release candidate 0 available for testing.
  2005-10-23 22:27           ` Kevin Ryde
@ 2005-10-25  1:29             ` Greg Troxel
  2005-10-31 23:41               ` Kevin Ryde
  0 siblings, 1 reply; 13+ messages in thread
From: Greg Troxel @ 2005-10-25  1:29 UTC (permalink / raw)


Kevin Ryde <user42@zip.com.au> writes:

> Greg Troxel <gdt@ir.bbn.com> writes:
> 
> Straight "pass through" to libc sounds good to me.
> 
> >    and make the implementation set TZ before calling
> >    strftime (perhaps unless an implementation which guarantees to read
> >    tm_zone is detected).
> 
> That might be slow.  I notice what localtime does changing TZ is a
> noticable slowdown with glibc.  (It re-reads the timezone file(s) on
> every TZ change.)
> 
> I wonder if munging the global tzname[] variable would be enough.  Bad
> for multi-threading, but we've got issues with that in the time funcs
> already.

If we munge the variable or set TZ, then scheme strftime will have
stricter semantics than C99.  Also, I wonder if setting the variable
is safe according to the standard which defines it; that seems
dangerous.

> >    Perhaps don't set
> >    the non-C99 fields in what is used for the libc call to avoid
> >    nonportable expectations.
> 
> I wouldn't deliberately break something just because it's not
> portable.
> 
> > The meta-issue I see here is about guile providing consistent behavior
> > on all platforms.
> 
> Though I see your point.

I realize this is a tough call, but declining to provide more behavior
than the relevant standard ensures that the original programmer finds
the 'bug', rather than it later being a portability problem.

> PS. I added "man 3 strftime" to the manual.

Thanks, that will be helpful to some I think.


-- 
        Greg Troxel <gdt@ir.bbn.com>


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 1.6.8 release candidate 0 available for testing.
  2005-10-25  1:29             ` Greg Troxel
@ 2005-10-31 23:41               ` Kevin Ryde
  0 siblings, 0 replies; 13+ messages in thread
From: Kevin Ryde @ 2005-10-31 23:41 UTC (permalink / raw)
  Cc: guile-devel

Greg Troxel <gdt@ir.bbn.com> writes:
>
> I realize this is a tough call,

I kicked it into touch, by adding this to the manual

     Note that `%Z' might print the `tm:zone' in TM or it might print
     just the current zone (`tzset' above).  A GNU system prints
     `tm:zone', a strict C99 system like NetBSD prints the current
     zone.  Perhaps in the future Guile will try to get `tm:zone' used
     always.

and this comment as a reminder

@c
@c  The issue in the above is not just whether tm_zone exists in
@c  struct tm, but whether libc feels it should read it.  Being a
@c  non-C99 field, a strict C99 program won't know to set it, quite
@c  likely leaving garbage there.  NetBSD, which has the field,
@c  therefore takes the view that it mustn't read it.  See the PR
@c  about this at
@c
@c      http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=21722
@c
@c  Uniformly making tm:zone used on all systems (all those which have
@c  %Z at all of course) might be nice (either mung TZ and tzset, or
@c  mung tzname[]).  On the other hand it would make us do more than
@c  C99 says, and we really don't want to get intimate with the gory
@c  details of libc time funcs, no more than can be helped.
@c


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2005-10-31 23:41 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-10-15 20:55 1.6.8 release candidate 0 available for testing Rob Browning
2005-10-16 21:02 ` Greg Troxel
2005-10-16 22:38   ` Kevin Ryde
2005-10-18 19:53     ` Greg Troxel
2005-10-19  1:27       ` Kevin Ryde
2005-10-19 17:10         ` Greg Troxel
2005-10-20  7:32           ` Ludovic Courtès
2005-10-19  1:34       ` Kevin Ryde
2005-10-19 17:18         ` Greg Troxel
2005-10-23 22:27           ` Kevin Ryde
2005-10-25  1:29             ` Greg Troxel
2005-10-31 23:41               ` Kevin Ryde
2005-10-23 22:41       ` Kevin Ryde

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).