unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: Stefan Israelsson Tampe <stefan.itampe@gmail.com>
To: guile-devel <guile-devel@gnu.org>
Subject: Fwd: What is the point of bytevectors?
Date: Sat, 12 Sep 2020 18:31:25 +0200	[thread overview]
Message-ID: <CAGua6m01FV-_EQm2EdxMbcakswjDDi4xm8YuTrCct1abGtNm+g@mail.gmail.com> (raw)
In-Reply-To: <CAGua6m2HFudH09LMV1JsWTWGeVDOR89w4M9MmYrtz-arXpQucA@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2707 bytes --]

---------- Forwarded message ---------
From: Stefan Israelsson Tampe <stefan.itampe@gmail.com>
Date: Sat, Sep 12, 2020 at 5:12 PM
Subject: Re: What is the point of bytevectors?
To: Linus Björnstam <linus.internet@fastmail.se>


If you want to handle e.g. raw data bytevectors is a must. You will find
that you need it when working with binary files, interact with C etc etc.
Not so much managing strings, for that as you say the string object should
be enough. And now to a shamfule advertisement of my python module for
guile. In python bytevectors are very much like strings and you can usa all
the python ordinary string operations on it. You may even use the regular
expression module for it if you like. I have a schemish interface for it
and you may use that if you can stand the dependency.

On Sat, Sep 12, 2020 at 12:36 PM Linus Björnstam <linus.internet@fastmail.se>
wrote:

> The point is to work with binary data, of which the most common type of C
> strings are one kind.
>
> If you are using libguile in your C code you can use guile strings in your
> C code and pass them around to avoid the encoding/decoding overhead. Or,
> the other way around, expose the procedures that work with whatever C
> string representation your are using to guile.
>
> If your latin1 strings contain unicode data they are not latin1.
>
> --
>   Linus Björnstam
>
> On Sat, 12 Sep 2020, at 09:49, divoplade wrote:
> > Hello guile users,
> >
> > I am writing a library mixing some scheme code and C code, and I have
> > two options for interfacing C strings:
> > 1. Use bytevectors;
> > 2. Use strings with byte access semantics (so-called latin-1, which is
> > really a misleading name since it will most certainly contain utf-8-
> > encoded unicode text).
> >
> > From the C side, they have nearly identical APIs, and the conversion
> > functions do not transcode anything.
> >
> > From the scheme side, however:
> > 1. The bytevector library needs to be imported;
> > 2. The function names have way more characters to type;
> > 3. The bytevector library is missing a lot of text functions (like
> > join, split, trim, pad, searching...).
> >
> > If the user wants to always manipulate unicode (decoded) strings, using
> > either bytevectors or latin-1 strings require transcoding to enter the
> > library and to exit the library, so either option is valid.
> >
> > But if the user wants to always manipulate utf-8-encoded strings [1],
> > using bytevectors is impossible or much more difficult (see points
> > above).
> >
> > So, why should I ever use bytevectors?
> >
> > divoplade
> >
> > [1] https://utf8everywhere.org/
> >
> >
> >
>
>

[-- Attachment #2: Type: text/html, Size: 3570 bytes --]

           reply	other threads:[~2020-09-12 16:31 UTC|newest]

Thread overview: expand[flat|nested]  mbox.gz  Atom feed
 [parent not found: <CAGua6m2HFudH09LMV1JsWTWGeVDOR89w4M9MmYrtz-arXpQucA@mail.gmail.com>]

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=CAGua6m01FV-_EQm2EdxMbcakswjDDi4xm8YuTrCct1abGtNm+g@mail.gmail.com \
    --to=stefan.itampe@gmail.com \
    --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).