From: Eli Zaretskii <eliz@gnu.org>
To: Philipp Stephani <p.stephani2@gmail.com>
Cc: larsi@gnus.org, dgutov@yandex.ru, kentaro.nakazawa@nifty.com,
emacs-devel@gnu.org
Subject: Re: bug#23750: 25.0.95; bug in url-retrieve or json.el
Date: Wed, 28 Dec 2016 20:55:18 +0200 [thread overview]
Message-ID: <83inq3vq7d.fsf@gnu.org> (raw)
In-Reply-To: <CAArVCkRybk6YF1zq_fvx5KLmN8M4vmiku3SYzq7TBrVGsu=wcg@mail.gmail.com> (message from Philipp Stephani on Wed, 28 Dec 2016 18:45:43 +0000)
> From: Philipp Stephani <p.stephani2@gmail.com>
> Date: Wed, 28 Dec 2016 18:45:43 +0000
> Cc: larsi@gnus.org, emacs-devel@gnu.org, kentaro.nakazawa@nifty.com,
> dgutov@yandex.ru
>
> > That has nothing to do with characters. A byte array is conceptually different from a character string.
>
> In Emacs, they are both implemented using very similar objects.
>
> Yes, that's why I said "conceptually different". The concepts may be the different, but the implementation
> might still be the same.
If the implementation is the same, then concepts are not very
different to begin with, and the abstraction will sooner or later
leak into applications.
> Our experience is that we should keep use of unibyte strings in Lisp
> application code to the absolute minimum, ideally zero. Once we
> arrived at that conclusion, we've been living happily ever after.
> This minor issue we are discussing here is certainly not worth
> repeating past mistakes for which we paid plenty in sweat and blood.
>
> If you want unibyte strings to represent octet streams, then unibyte strings must be usable in application
> code
They are usable, but using them requires knowledge and proficiency
that's unusual with many Lisp developers, and it also has some
unpleasant pitfalls.
> because octet streams are a concept that exists in reality, and applications must be able to support
> them in some way. If you don't want unibyte strings, then you need to provide some different way to represent
> octet streams.
We use unibyte strings where we must, and otherwise prefer multibyte
ones. In most cases the unibyte strings exist in Emacs internals, so
that Lisp applications will not have to deal with them. This case is
one of the few exceptions.
If you are still unconvinced and think that we need some separate
representation for byte arrays, consider this: when Emacs starts, it
takes some time until it bootstraps itself enough to learn how to
decode non-ASCII strings, such as file names. Until then, all file
names are unibyte strings, and Emacs still must handle them correctly,
because otherwise it would be impossible to build or start it in a
directory that includes non-ASCII characters.
This and other similar subtleties are the reason why using anything
but a string for raw byte arrays is not a good idea, IMO and IME.
next prev parent reply other threads:[~2016-12-28 18:55 UTC|newest]
Thread overview: 125+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-29 8:22 bug#23750: 25.0.95; bug in url-retrieve or json.el Kentaro NAKAZAWA
2016-11-29 9:54 ` Andreas Schwab
2016-11-29 10:06 ` Kentaro NAKAZAWA
2016-11-29 10:08 ` Dmitry Gutov
2016-11-29 10:23 ` Kentaro NAKAZAWA
2016-11-29 10:34 ` Lars Ingebrigtsen
2016-11-29 10:38 ` Kentaro NAKAZAWA
2016-11-29 10:42 ` Lars Ingebrigtsen
2016-11-29 10:48 ` Kentaro NAKAZAWA
2016-11-29 10:49 ` Dmitry Gutov
2016-11-29 10:50 ` Dmitry Gutov
2016-11-29 10:55 ` Kentaro NAKAZAWA
2016-11-29 10:59 ` Dmitry Gutov
2016-11-29 11:03 ` Kentaro NAKAZAWA
2016-11-29 11:05 ` Dmitry Gutov
2016-11-29 11:12 ` Kentaro NAKAZAWA
2016-11-29 17:23 ` Eli Zaretskii
2016-11-29 23:09 ` Philipp Stephani
2016-11-29 23:18 ` Philipp Stephani
2016-11-30 15:11 ` Eli Zaretskii
2016-11-30 15:20 ` Lars Ingebrigtsen
2016-11-30 15:43 ` Eli Zaretskii
2016-11-30 15:46 ` Lars Ingebrigtsen
2016-11-30 0:16 ` Dmitry Gutov
2016-11-30 15:13 ` Eli Zaretskii
2016-11-30 15:17 ` Dmitry Gutov
2016-11-30 15:32 ` Stefan Monnier
2016-11-30 15:42 ` Eli Zaretskii
2016-11-30 15:45 ` Dmitry Gutov
2016-11-30 15:48 ` Lars Ingebrigtsen
2016-11-30 16:25 ` Eli Zaretskii
2016-11-30 16:27 ` Lars Ingebrigtsen
2016-11-30 16:42 ` Eli Zaretskii
2016-11-30 18:25 ` Philipp Stephani
2016-11-30 18:48 ` Eli Zaretskii
2016-12-28 18:18 ` Philipp Stephani
2016-12-28 18:34 ` Eli Zaretskii
2016-12-28 18:45 ` Philipp Stephani
2016-12-28 18:55 ` Eli Zaretskii [this message]
2016-12-28 19:03 ` Andreas Schwab
2016-11-30 18:23 ` Philipp Stephani
2016-11-30 18:44 ` Eli Zaretskii
2016-12-28 18:09 ` Philipp Stephani
2016-12-28 18:27 ` Eli Zaretskii
2016-12-28 18:35 ` Philipp Stephani
2016-12-28 18:45 ` Eli Zaretskii
2016-12-28 18:22 ` Philipp Stephani
2016-12-28 18:57 ` Lars Ingebrigtsen
2016-12-30 0:07 ` Richard Stallman
2016-12-30 14:15 ` Lars Ingebrigtsen
2016-12-30 16:59 ` Eli Zaretskii
2017-01-21 15:39 ` Lars Ingebrigtsen
2017-01-21 15:56 ` Eli Zaretskii
2017-01-21 16:30 ` Lars Ingebrigtsen
2017-01-21 22:58 ` Stefan Monnier
2017-01-24 20:04 ` Lars Ingebrigtsen
2017-01-28 9:52 ` Elias Mårtenson
2017-01-28 14:16 ` Lars Ingebrigtsen
2016-12-30 21:38 ` Richard Stallman
2016-11-30 16:23 ` Eli Zaretskii
2016-12-01 0:30 ` Dmitry Gutov
2016-12-01 17:17 ` Eli Zaretskii
2016-12-02 13:18 ` Dmitry Gutov
2016-12-02 14:24 ` Eli Zaretskii
2016-12-02 14:35 ` Dmitry Gutov
2016-12-02 15:20 ` Eli Zaretskii
2016-12-02 14:53 ` Yuri Khan
2016-12-02 15:45 ` Eli Zaretskii
2016-12-02 15:51 ` Lars Ingebrigtsen
2016-12-02 15:58 ` Eli Zaretskii
2016-12-02 15:29 ` Lars Ingebrigtsen
2016-12-02 15:32 ` Dmitry Gutov
2016-12-02 15:48 ` Lars Ingebrigtsen
2016-12-02 15:56 ` Dmitry Gutov
2016-12-02 16:02 ` Lars Ingebrigtsen
2016-12-02 16:06 ` Dmitry Gutov
2016-12-02 16:31 ` Lars Ingebrigtsen
2016-12-02 23:13 ` Dmitry Gutov
2016-12-03 0:37 ` Lars Ingebrigtsen
2016-12-03 1:27 ` Dmitry Gutov
2016-12-03 8:12 ` Eli Zaretskii
2016-12-03 10:01 ` Lars Ingebrigtsen
2016-12-03 16:00 ` Stefan Monnier
2016-12-03 20:01 ` Lars Ingebrigtsen
2016-12-03 20:57 ` Andreas Schwab
2016-12-28 18:25 ` Philipp Stephani
2016-11-30 15:06 ` Eli Zaretskii
2016-11-30 15:31 ` Stefan Monnier
-- strict thread matches above, loose matches on Subject: below --
2016-06-12 2:22 Leo Liu
2016-06-13 15:02 ` Dmitry Gutov
2016-06-13 17:55 ` Stefan Monnier
2016-06-13 19:26 ` Dmitry Gutov
2016-06-14 0:30 ` Stefan Monnier
2016-06-19 18:14 ` Dmitry Gutov
2016-06-19 18:25 ` Eli Zaretskii
2016-06-19 18:30 ` John Wiegley
2016-06-19 18:45 ` Dmitry Gutov
2016-06-19 19:56 ` John Wiegley
2016-06-19 20:05 ` Dmitry Gutov
2016-06-19 21:07 ` John Wiegley
2016-06-20 1:28 ` Glenn Morris
2016-06-20 4:22 ` John Wiegley
2016-06-20 12:39 ` Lars Ingebrigtsen
2016-07-01 20:49 ` John Wiegley
2016-06-20 14:42 ` Eli Zaretskii
2016-06-23 17:14 ` Glenn Morris
2016-06-20 1:26 ` Glenn Morris
2016-06-20 2:58 ` Dmitry Gutov
2016-06-19 18:36 ` Dmitry Gutov
2016-06-20 0:15 ` Leo Liu
2016-06-20 14:39 ` Eli Zaretskii
2016-06-20 2:40 ` Eli Zaretskii
2016-06-20 2:51 ` Dmitry Gutov
2016-06-20 14:38 ` Eli Zaretskii
2016-06-20 14:54 ` Dmitry Gutov
2016-06-20 15:03 ` Eli Zaretskii
2016-06-20 17:16 ` Dmitry Gutov
2016-06-20 20:17 ` Eli Zaretskii
2016-06-20 20:27 ` Dmitry Gutov
2016-06-21 2:30 ` Eli Zaretskii
2016-06-21 13:51 ` Dmitry Gutov
2016-06-21 15:18 ` Eli Zaretskii
2016-06-22 1:08 ` John Wiegley
2016-06-22 2:36 ` Eli Zaretskii
2016-06-22 18:21 ` Dmitry Gutov
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=83inq3vq7d.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=dgutov@yandex.ru \
--cc=emacs-devel@gnu.org \
--cc=kentaro.nakazawa@nifty.com \
--cc=larsi@gnus.org \
--cc=p.stephani2@gmail.com \
/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.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.