guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: null terminated strings


From: Andreas Voegele
Subject: Re: null terminated strings
Date: Fri, 16 Jan 2004 13:24:01 +0100
User-agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.3.50 (gnu/linux)

Roland Orre writes:

> On Fri, 2004-01-16 at 11:17, Andreas Voegele wrote:
>> Roland Orre writes:
>> 
>> > On Fri, 2004-01-16 at 10:10, Andreas Voegele wrote:
>> >
>> >> "Remove calls to SCM_STRING_COERCE_0TERMINATION_X.  Since the
>> >> substring type is gone, all strings are 0-terminated anyway."
>> >
>> > Such a statement is very worrying. What happened to the promises
>> > that all substrings will be shared strings?
>> 
>> I'm new to Guile.  I don't know why shared strings were removed from
>> Guile, but things were probably simplified greatly by this decision.
>> I think that it is very useful to zero terminate all strings since
>> embedding and extending Guile becomes easier.
>
> During all years I've used scm and later guile (I think 14 years now)
> I have very very rarely had any need for null terminated strings. There
> is a function in guile to convert a null terminated string to a guile
> string, this I've used a few times. In C programming I often don't
> rely on null terminated strings either as there are many C library
> functions that works with length, which I consider more elegant.

It probably depends on what you're doing with Guile.  I intend to use
Guile to glue together code from a lot of existing C libraries.  I'm
currently writing wrappers for several C libraries and a lot of
functions provided by these libraries require null terminated strings.

On the other hand, I agree that a stable API is important.  Because of
this I also thought about using Guile 1.4 but I came to the conclusion
that Guile 1.6 is better when you need to wrap a lot of C libraries.
(I know SWIG but I don't like it very much.)

> The absence of shared substrings on the other hand means a lot of
> special code to be able to do something similar without having to
> copy and create strings all the time. For instance in a conversion
> routine for fixed data base tables I made some years ago I had first
> used substrings. The program took 15 hours to run on a specific
> table. When I changed to use shared substrings it took about 1 hour
> on the same table.

That's indeed a huge difference.

> I think it is quite bad to have the requirement that guile should
> rely on null terminated strings as it is often quite easy to come
> around this from my point of view. In guile 1.6.4 it is also
> expressed so that all substrings are intended to become internally
> shared, which I don't see have happened yet.

I'm wondering how substrings could be shared when there's also a
promise that all strings are null terminated.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]