[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: creating unibyte strings
From: |
Stefan Monnier |
Subject: |
Re: creating unibyte strings |
Date: |
Fri, 22 Mar 2019 08:33:02 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) |
>> Which reminds me: could someone add to the module API a primitive to
>> build a *unibyte* string?
> I don't like adding such a primitive. We don't want to proliferate
> unibyte strings in Emacs through that back door, because manipulating
> unibyte strings involves subtle issues many Lisp programmers are not
> aware of.
I don't see what's subtle about "unibyte" strings, as long as you
understand that these are strings of *bytes* instead of strings
of *characters* (i.e. they're `int8[]` rather than `w_char_t[]`).
"Multibyte" strings are just as subtle (maybe more so even), yet we
rightly don't hesitate to offer a primitive way to construct them.
> Instead, how about doing that via vectors of byte values?
What's the advantage? That seems even more convoluted: create a Lisp
vector of the right size (i.e. 8x the size of your string on a 64bit
system), loop over your string turning each byte into a Lisp integer
(with the reverted API, this involves allocation of an `emacs_value`
box), then pass that to `concat`?
It's probably going to be even less efficient than going through utf-8
and back.
Think about cases where the module receives byte strings from the disk
or the network and need to pass that to `decode-coding-string`.
And consider that we might be talking about megabytes of strings.
Stefan
- Re: Oddities with dynamic modules, (continued)
Re: Oddities with dynamic modules, Philipp Stephani, 2019/03/21
- Re: Oddities with dynamic modules, Eli Zaretskii, 2019/03/21
- Re: Oddities with dynamic modules, Philipp Stephani, 2019/03/21
- Re: Oddities with dynamic modules, Eli Zaretskii, 2019/03/21
- Re: Oddities with dynamic modules, Philipp Stephani, 2019/03/21
- creating unibyte strings (was: Oddities with dynamic modules), Stefan Monnier, 2019/03/21
- Re: creating unibyte strings (was: Oddities with dynamic modules), Eli Zaretskii, 2019/03/22
- Re: creating unibyte strings,
Stefan Monnier <=
- Re: creating unibyte strings, Eli Zaretskii, 2019/03/22
- Re: creating unibyte strings, Stefan Monnier, 2019/03/22
- Re: creating unibyte strings, Eli Zaretskii, 2019/03/22
- Re: creating unibyte strings, Stefan Monnier, 2019/03/22
- Re: creating unibyte strings, Eli Zaretskii, 2019/03/22
- Re: creating unibyte strings, Elias Mårtenson, 2019/03/24
- Re: creating unibyte strings, Eli Zaretskii, 2019/03/24
- Re: creating unibyte strings, Elias Mårtenson, 2019/03/24
- Re: creating unibyte strings, Eli Zaretskii, 2019/03/24
- Re: creating unibyte strings, Elias Mårtenson, 2019/03/26