From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: taylanbayirli@gmail.com (Taylan Ulrich =?utf-8?Q?Bay=C4=B1rl=C4=B1?= =?utf-8?Q?=2FKammer?=) Newsgroups: gmane.emacs.devel Subject: Re: Emacs rewrite in a maintainable language Date: Sun, 18 Oct 2015 14:54:59 +0200 Message-ID: <87wpuks5ek.fsf@T420.taylan> References: <561A19AB.5060001@cumego.com> <87io6dl0h0.fsf@wanadoo.es> <87lhb82qxc.fsf@gmail.com> <87oag4jk74.fsf@wanadoo.es> <87k2qrki45.fsf@wanadoo.es> <8737xf9je9.fsf@fencepost.gnu.org> <87pp0fm0j3.fsf@gnu.org> <87r3kusx8z.fsf@fencepost.gnu.org> <83lhb26eb9.fsf@gnu.org> <876126key3.fsf@gnu.org> <83fv1a6bfu.fsf@gnu.org> <87d1weo7u9.fsf@gnu.org> <83zizi3qr0.fsf@gnu.org> <87lhb1n81y.fsf@gnu.org> <83si594wt3.fsf@gnu.org> <87io64iigs.fsf@gnu.org> <87r3kso1gr.fsf@fencepost.gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Trace: ger.gmane.org 1445172913 9067 80.91.229.3 (18 Oct 2015 12:55:13 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 18 Oct 2015 12:55:13 +0000 (UTC) Cc: Ludovic =?utf-8?Q?Court=C3=A8s?= , Eli Zaretskii , emacs-devel@gnu.org To: David Kastrup Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Oct 18 14:55:09 2015 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1ZnnUT-0007cV-7v for ged-emacs-devel@m.gmane.org; Sun, 18 Oct 2015 14:55:09 +0200 Original-Received: from localhost ([::1]:33626 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZnnUR-0007EI-Qw for ged-emacs-devel@m.gmane.org; Sun, 18 Oct 2015 08:55:07 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:51469) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZnnUN-0007E3-LX for emacs-devel@gnu.org; Sun, 18 Oct 2015 08:55:04 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZnnUM-0004jv-L6 for emacs-devel@gnu.org; Sun, 18 Oct 2015 08:55:03 -0400 Original-Received: from mail-wi0-x22b.google.com ([2a00:1450:400c:c05::22b]:34792) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZnnUM-0004jo-EG; Sun, 18 Oct 2015 08:55:02 -0400 Original-Received: by wikq8 with SMTP id q8so17470211wik.1; Sun, 18 Oct 2015 05:55:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-type:content-transfer-encoding; bh=k/8lAZ4r96kZoVJd7RkhS+P6OZsj50Y0Ek5k8X/b4gg=; b=O0O8W/5wDtNkH8XUJ8XJBCoD5JSWKDGh0gTI7dygJUt3jDhMkUUBhCwdgM0FEhWPY1 Sr1DicNSOtSRrNh51543pF85yUi/DH1MkHSE+PsxXgEPqJAvt6qiYSuLAaX+kSCBBvsR Wbz0cgKrVvFqvinLwjtofbatJ88ZEfciLVoQy6aXD4kEB4MsB4tXt4ZcuFI8Efctuf7d RvCk0RGkb0st2dbLjQ94ngzFKsXIk6YNwuROEiWKR371z203bWETXkYJ4goukKMGybt6 f0h2Fuc7GC0l/3ISKFloQhp7uCLMizjb0Gfcv2bGHiOqByZQuULuySY1ZrXmtO5gv1DS dlyg== X-Received: by 10.194.172.1 with SMTP id ay1mr27760463wjc.101.1445172901820; Sun, 18 Oct 2015 05:55:01 -0700 (PDT) Original-Received: from T420.taylan ([2a02:908:c32:4740:221:ccff:fe66:68f0]) by smtp.gmail.com with ESMTPSA id pi5sm4920253wic.3.2015.10.18.05.55.00 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 18 Oct 2015 05:55:00 -0700 (PDT) In-Reply-To: <87r3kso1gr.fsf@fencepost.gnu.org> (David Kastrup's message of "Sun, 18 Oct 2015 13:33:40 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:400c:c05::22b X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:191940 Archived-At: David Kastrup writes: > ludo@gnu.org (Ludovic Court=C3=A8s) writes: > >> Eli Zaretskii skribis: >> >>> Guile's i18n is today where Emacs was at v20.1, with the (important) >>> difference that its internal representation is based on Unicode and >>> UTF-8. >> >> This is incorrect. >> >>> The lessons of Emacs development since then till today are yet to be >>> learned and incorporated into Guile. >> >> Probably many of them, but maybe not all. After all, Guile is not a >> text editor, so the requirements may be different. > > I quote from the GUILE project page: > > What is Guile? What can it do for you? > > Guile is the GNU Ubiquitous Intelligent Language for Extensions, the > official extension language for the GNU operating system. > > Guile is a library designed to help programmers create flexible > applications. Using Guile in an application allows the application's > functionality to be extended by users or other programmers with > plug-ins, modules, or scripts. Guile provides what might be > described as "practical software freedom," making it possible for > users to customize an application to meet their needs without > digging into the application's internals. > > I don't see a qualifier "unless you were planning to write a text > editor". GUILE even has "Extensions" in its name. As well as > "Ubiquitous". So how do you reckon that it should not be used for > extending text editors? And how do you plead at the same time that it > should be used for extending Emacs? > > It's not just for the sake of GuileEmacs that GUILE needs to work on the > cost of passing even mere UTF-8 into GUILE and back out. GUILE cannot > even pass its own strings through its own string ports without > converting back and forth. The state of the world of software would be even more horrible than it is now if every program tried to accommodate for every possible invalid input with something other than gracefully aborting. (Many abort ungracefully, sadly.) Guile's string library is for working with strings (surprise!), not arbitrary byte vectors. For arbitrary byte vectors, Guile has bytevectors (surprise!!). If one implemented a text editor from scratch in Guile and wanted to allow editing files with no proper encoding, one would use an abstraction on top of bytevectors. I'm pretty sure that nearly every programming language with a sane string library does more or less the same thing. This is not a problem of Guile; it's a fundamental problem of the requirement to allow working with byte vectors that "ideally are but are not necessarily" strings. Offering a data type encapsulating that idea that falls between byte vectors and strings is a very special case and it should not be surprising that a general-purpose programming language doesn't provide such a data type by default. For some fun that can result from functions with ill-defined domains, see the shell-quasiquote thread. Yay for code injection! Taylan