From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: Andreas Voegele Newsgroups: gmane.lisp.guile.user Subject: Re: null terminated strings Date: Fri, 16 Jan 2004 13:24:01 +0100 Sender: guile-user-bounces+guile-user=m.gmane.org@gnu.org Message-ID: <87eku0f5em.fsf@ID-28718.user.uni-berlin.de> References: <87oet4ntsm.fsf_-_@ID-28718.user.uni-berlin.de> <1074245327.6733.9.camel@localhost> <87u12wjiy7.fsf@ID-28718.user.uni-berlin.de> <1074250929.6734.63.camel@localhost> NNTP-Posting-Host: deer.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: sea.gmane.org 1074272970 22554 80.91.224.253 (16 Jan 2004 17:09:30 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Fri, 16 Jan 2004 17:09:30 +0000 (UTC) Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Fri Jan 16 18:09:20 2004 Return-path: Original-Received: from monty-python.gnu.org ([199.232.76.173]) by deer.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 1AhXTD-0000gL-00 for ; Fri, 16 Jan 2004 18:09:20 +0100 Original-Received: from localhost ([127.0.0.1] helo=monty-python.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.24) id 1AhX1f-0003Tl-T5 for guile-user@m.gmane.org; Fri, 16 Jan 2004 11:40:51 -0500 Original-Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.24) id 1AhW4j-0001u7-UY for guile-user@gnu.org; Fri, 16 Jan 2004 10:39:57 -0500 Original-Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.24) id 1AhVQG-0005aq-WF for guile-user@gnu.org; Fri, 16 Jan 2004 09:58:40 -0500 Original-Received: from [213.165.64.20] (helo=mail.gmx.net) by monty-python.gnu.org with smtp (Exim 4.24) id 1AhT1B-0007GU-W2 for guile-user@gnu.org; Fri, 16 Jan 2004 07:24:06 -0500 Original-Received: (qmail 21186 invoked by uid 65534); 16 Jan 2004 12:24:01 -0000 Original-Received: from pD9519EB6.dip.t-dialin.net (EHLO kepler.voegele.dyndns.org) (217.81.158.182) by mail.gmx.net (mp006) with SMTP; 16 Jan 2004 13:24:01 +0100 X-Authenticated: #14729429 Original-Received: by kepler.voegele.dyndns.org (Postfix, from userid 1000) id 07AF92E63D; Fri, 16 Jan 2004 13:24:01 +0100 (CET) Original-To: guile-user@gnu.org X-Request-PGP: http://blackhole.pca.dfn.de:11371/pks/lookup?op=get&search=0x12C21DCA X-PGP-KeyID: 12C21DCA In-Reply-To: <1074250929.6734.63.camel@localhost> (Roland Orre's message of "Fri, 16 Jan 2004 12:02:09 +0100") User-Agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.3.50 (gnu/linux) X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.2 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane.org@gnu.org Xref: main.gmane.org gmane.lisp.guile.user:2615 X-Report-Spam: http://spam.gmane.org/gmane.lisp.guile.user:2615 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. _______________________________________________ Guile-user mailing list Guile-user@gnu.org http://mail.gnu.org/mailman/listinfo/guile-user