unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: Mark H Weaver <mhw@netris.org>
To: Bruce Korb <bkorb@gnu.org>
Cc: guile-devel@gnu.org
Subject: Re: mutable interfaces - was: Guile: What's wrong with this?
Date: Sat, 07 Jan 2012 13:55:55 -0500	[thread overview]
Message-ID: <8739br8hqc.fsf@netris.org> (raw)
In-Reply-To: <877h138iwm.fsf@netris.org> (Mark H. Weaver's message of "Sat, 07 Jan 2012 13:30:33 -0500")

Replying to myself...

> Again, I stress that this has nothing to do with Guile.  All software,
> if it wishes to be properly internationalized, needs to think about
> where a string came from.  In general, your program's source code (and
> thus the C string literals it contains) will have a different encoding
> than C strings that come from the user.  C strings of different
> encodings are essentially of different types (even though C's type
> system is too crude to distinguish them), and you must treat them as
> such.

In case it wasn't clear: Scheme strings don't have any encoding; they
are a sequence of Unicode characters.  Therefore, you never have to
think about where a Scheme string came from.  What you need to think
about is where a raw sequence of bytes came from, whether it be a C
string (C chars are not characters but merely bytes), a Scheme
bytevector, or the bytes in a command-line argument, environment
variable, or the bytes read from a file descriptor.

Ideally, our code would make these distinctions very clear.  However, if
you're not motivated (or don't have time) to fix that properly right
now, there's one fact that can save you a lot of time: on GNU/Linux and
POSIX systems, every locale encoding is compatible with ASCII.
Therefore, if you know that a string contains only ASCII characters,
then you don't need to think about whether to use scm_from_locale_string
or scm_from_utf8_string, because they'll both be equivalent.

     Mark



  reply	other threads:[~2012-01-07 18:55 UTC|newest]

Thread overview: 117+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-03  4:08 What's wrong with this? Bruce Korb
2012-01-03 15:03 ` Mike Gran
2012-01-03 16:26   ` Guile: " Bruce Korb
2012-01-03 16:30     ` Mike Gran
2012-01-03 22:24     ` Ludovic Courtès
2012-01-03 23:15       ` Bruce Korb
2012-01-03 23:33         ` Ludovic Courtès
2012-01-04  0:55           ` Bruce Korb
2012-01-04  3:12             ` Noah Lavine
2012-01-04 17:37               ` bytevector -- was: " Bruce Korb
2012-01-04 21:17             ` Ludovic Courtès
2012-01-04 22:36               ` Bruce Korb
2012-01-05  0:01                 ` Ludovic Courtès
2012-01-05 18:36                   ` non-reproduction of initial issue -- was: " Bruce Korb
2012-01-05 18:50                     ` Mark H Weaver
2012-01-04 12:19         ` Ian Price
2012-01-04 17:16           ` Bruce Korb
2012-01-04 17:21             ` Andy Wingo
2012-01-04 17:39             ` David Kastrup
2012-01-04 21:52             ` Ian Price
2012-01-04 22:18               ` Bruce Korb
2012-01-04 23:22                 ` Mike Gran
2012-01-04 23:59                 ` Mark H Weaver
2012-01-05 17:22                   ` Bruce Korb
2012-01-05 18:13                     ` Mark H Weaver
2012-01-05 19:02                       ` Mark H Weaver
2012-01-05 20:24                     ` David Kastrup
2012-01-05 22:42                     ` Mark H Weaver
2012-01-06  1:02                       ` Mike Gran
2012-01-06  1:41                         ` Mark H Weaver
2012-01-06  2:38                           ` Noah Lavine
2012-01-06 13:37                           ` Mike Gran
2012-01-06 14:11                             ` David Kastrup
2012-01-06 18:13                             ` Mark H Weaver
2012-01-06 19:06                               ` Bruce Korb
2012-01-06 19:19                                 ` David Kastrup
2012-01-06 20:03                                   ` Mark H Weaver
2012-01-07 16:13                                 ` Mark H Weaver
2012-01-07 17:35                                   ` mutable interfaces - was: " Bruce Korb
2012-01-07 17:47                                     ` David Kastrup
2012-01-07 18:30                                     ` Mark H Weaver
2012-01-07 18:55                                       ` Mark H Weaver [this message]
2012-01-06 22:23                               ` Guile BUG: " Bruce Korb
2012-01-06 23:11                                 ` Mark H Weaver
2012-01-06 23:35                                   ` Andy Wingo
2012-01-06 23:41                                   ` Bruce Korb
2012-01-07 15:00                                     ` Mark H Weaver
2012-01-07 15:27                                       ` Bruce Korb
2012-01-07 16:38                                         ` Mark H Weaver
2012-01-07 17:39                                           ` Bruce Korb
2012-01-09 15:41                                             ` Mark H Weaver
2012-01-09 17:27                                               ` Bruce Korb
2012-01-09 18:32                                                 ` Andy Wingo
2012-01-09 19:48                                                   ` Bruce Korb
2012-01-07 15:47                                       ` David Kastrup
2012-01-07 17:07                                         ` Mark H Weaver
2012-01-07 14:35                                   ` Mark H Weaver
2012-01-07 15:20                                     ` Mike Gran
2012-01-07 22:25                                     ` Ludovic Courtès
2012-01-10  9:13                                     ` The empty string and other empty strings Ludovic Courtès
2012-01-10 11:28                                       ` Mike Gran
2012-01-10 13:03                                         ` Mark H Weaver
2012-01-10 13:09                                           ` Mike Gran
2012-01-10 15:41                                           ` Mark H Weaver
2012-01-10 15:48                                             ` David Kastrup
2012-01-10 16:15                                               ` Mark H Weaver
2012-01-12 22:33                                                 ` Ludovic Courtès
2012-01-13  9:27                                                   ` David Kastrup
2012-01-13 16:39                                                     ` Mark H Weaver
2012-01-13 17:36                                                       ` David Kastrup
2012-01-16  8:26                                                       ` Marijn
2012-01-16  8:47                                                         ` David Kastrup
2012-01-20 21:31                                                       ` Andy Wingo
2012-01-10 14:10                                         ` David Kastrup
2012-01-10 12:21                                       ` Mike Gran
2012-01-10 12:27                                       ` Mark H Weaver
2012-01-10 16:34                                         ` Ludovic Courtès
2012-01-10 17:04                                           ` David Kastrup
2012-01-06 23:28                                 ` Guile BUG: What's wrong with this? Bruce Korb
2012-01-07 20:57                           ` Guile: " Ian Price
2012-01-08  5:05                             ` Mark H Weaver
2012-01-06  9:23                         ` David Kastrup
2012-01-05  7:22                 ` David Kastrup
2012-01-04 22:46             ` Ludovic Courtès
2012-01-04  3:04       ` Mike Gran
2012-01-04  9:35         ` nalaginrut
2012-01-04  9:41         ` David Kastrup
2012-01-04 21:07         ` Ludovic Courtès
2012-01-04 10:03     ` Mark H Weaver
2012-01-04 14:29       ` Mike Gran
2012-01-04 14:45         ` David Kastrup
2012-01-04 16:47         ` Andy Wingo
2012-01-04 17:14           ` David Kastrup
2012-01-04 17:32             ` Andy Wingo
2012-01-04 17:49               ` David Kastrup
2012-01-04 18:09                 ` Andy Wingo
2012-01-04 17:30           ` Bruce Korb
2012-01-04 17:44             ` David Kastrup
2012-01-04 18:26             ` Ian Price
2012-01-04 18:48               ` Mark H Weaver
2012-01-04 19:29               ` Bruce Korb
2012-01-04 20:20                 ` David Kastrup
2012-01-04 23:19                 ` Mark H Weaver
2012-01-04 23:28                   ` Bruce Korb
2012-01-07 15:43                   ` Fixed string corruption bugs (was Guile: What's wrong with this?) Mark H Weaver
2012-01-07 16:19                     ` Fixed string corruption bugs Andy Wingo
2012-01-04 18:31           ` Guile: What's wrong with this? Mark H Weaver
2012-01-04 18:43             ` Andy Wingo
2012-01-04 19:29               ` Mark H Weaver
2012-01-04 19:43                 ` Andy Wingo
2012-01-04 20:08                   ` Bruce Korb
2012-01-04 20:14                     ` David Kastrup
2012-01-04 20:56                     ` Andy Wingo
2012-01-04 21:30                       ` Bruce Korb
2012-01-04 17:19         ` Mark H Weaver
2012-01-05  4:24           ` Mark H Weaver
2012-01-04 22:37       ` Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8739br8hqc.fsf@netris.org \
    --to=mhw@netris.org \
    --cc=bkorb@gnu.org \
    --cc=guile-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).