From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: =?UTF-8?Q?Linus_Bj=c3=b6rnstam?= Newsgroups: gmane.lisp.guile.devel Subject: Re: GNU Guile 3.0.0 released Date: Sun, 19 Jan 2020 13:07:25 +0100 Message-ID: References: <87zhenekcp.fsf@pobox.com> <87o8v32ifj.fsf@web.de> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="82024"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:68.0) Gecko/20100101 Thunderbird/68.4.1 To: guile-devel@gnu.org Original-X-From: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Sun Jan 19 13:07:49 2020 Return-path: Envelope-to: guile-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1it9Mq-000LGF-LN for guile-devel@m.gmane-mx.org; Sun, 19 Jan 2020 13:07:48 +0100 Original-Received: from localhost ([::1]:49616 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1it9Mp-0003Yt-76 for guile-devel@m.gmane-mx.org; Sun, 19 Jan 2020 07:07:47 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:56899) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1it9MW-0003YZ-S4 for guile-devel@gnu.org; Sun, 19 Jan 2020 07:07:30 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1it9MV-000312-Fk for guile-devel@gnu.org; Sun, 19 Jan 2020 07:07:28 -0500 Original-Received: from out1-smtp.messagingengine.com ([66.111.4.25]:43299) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1it9MV-00030o-86 for guile-devel@gnu.org; Sun, 19 Jan 2020 07:07:27 -0500 Original-Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.nyi.internal (Postfix) with ESMTP id EB9C321B01 for ; Sun, 19 Jan 2020 07:07:26 -0500 (EST) Original-Received: from mailfrontend2 ([10.202.2.163]) by compute3.internal (MEProxy); Sun, 19 Jan 2020 07:07:26 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=veryfast.biz; h= subject:to:references:from:message-id:date:mime-version :in-reply-to:content-type:content-transfer-encoding; s=fm1; bh=y Pzdgpsh282GhY9seilVz8nwgXmlKzk9Sgd0bcYIMGk=; b=bgB+jRz7qP6BG/2Dv Rut9Exm5Fsh7GFz+kbvKOQ08cFAHpjCISZfRVqGSKEKk0Y23k1EoIGG3xCCsnPI4 cwD6vxlrzV6t/BO9ZZ7mEn7lMyyghLZHkHhr+wzWvdRe3MJSqA+kNoWZc3BR4VWK dUDNWOSGdIJOSWrBCcdRJ84AQZB2lN8rqsUbMcQXOVhRl66g+CpWOT3qB3oCEJ6+ J7mIc+QBCXghcoYmER2aAXhcplanA+LjC2R+b8EtzCwu01W7IeCi4IYD8ZHpsZaS ctIY+PWWjTO41xK0R3vQT7A8Z5Yl/ccARRtrjtlmyIIk6vLUTpKccdYFD5xzJPI3 3cfTg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm1; bh=yPzdgpsh282GhY9seilVz8nwgXmlKzk9Sgd0bcYIM Gk=; b=BWVeiVc/l9/d+jgiuwDjccp6B2Uf5dVCbrxN97M2HUe8TASxfhK9lJ2/2 4AlcwwTymC1BeHzo/fWl+u/CXJ3rCLVz18ZMiZ7Ei7boYA2wLYZzA7ezZC1/qSyP glfYVQLElJYvRCyEXuUuXgBmZGw3z14Wz5BoYv2wbua78UofFGxH7EEj6vUDMbZL zQxvw0t+cjia64NKcSk9SDs0bWmznteqMLeb4i5mGFLkRKJoQlp11/PAVs4hG5Hf QCEzlaPfcb/aB53h2DYs7p+ilRZVIRErOpIZLN2o1chbxqjDOfquokiTTLcAnj9u C7FE8g2Un1Q0Arco5RFyy+MVXCuhg== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedugedrudefgdefiecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecunecujfgurhepuffvfhfhkffffgggjggtgfesthekre dttdefjeenucfhrhhomhepnfhinhhushgpuehjnphrnhhsthgrmhcuoehlihhnuhhsrdgs jhhorhhnshhtrghmsehvvghrhihfrghsthdrsghiiieqnecuffhomhgrihhnpehsrhdrhh htpdhgnhhurdhorhhgnecukfhppedukeehrdeihedrudefhedrvdefvdenucfrrghrrghm pehmrghilhhfrhhomheplhhinhhushdrsghjohhrnhhsthgrmhesvhgvrhihfhgrshhtrd gsihiinecuvehluhhsthgvrhfuihiivgeptd X-ME-Proxy: Original-Received: from Linuss-iMac.local (unknown [185.65.135.232]) by mail.messagingengine.com (Postfix) with ESMTPA id 7EE8E3060B12 for ; Sun, 19 Jan 2020 07:07:26 -0500 (EST) In-Reply-To: <87o8v32ifj.fsf@web.de> Content-Language: en-US X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.111.4.25 X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Original-Sender: "guile-devel" Xref: news.gmane.io gmane.lisp.guile.devel:20306 Archived-At: If you want a portable implementation, you can actually hack it using macros. Re-define lambda, define, let(*,-values,letrec,letrec*),cond, case and begin to rewrite everything to letrec and you are done! The problem is that it will be slower than using let* for the bindings that don't require letrec in many schemes, since the don't do the equivilent of guile's letrectification pass (described in the paper "Letrec done right (reloaded)" iirc). I have a syntax-rules implementation of it if you are interested, that also supports a simplified define-like binding that converts to let*. That one does _not_ convert the body to one letrec, only defines following eachother. so (define a 1) (when (even? a) (error "ERROR")) (define b 2) becomes (letrec ((a ...))   (when (even? a) (error "ERROR"))     (letrec ((b 2))       ...) This is not compatible with guile, but is trivial to fix! Trivially portable to any other scheme, since it uses no fancy features except the usual module things: https://hg.sr.ht/~bjoli/guile-define/ On 2020-01-16 22:35, Arne Babenhauserheide wrote: > Andy Wingo writes: > >> We are delighted to announce GNU Guile release 3.0.0, the first in the >> new 3.0 stable release series. > … >> The Guile web page is located at http://gnu.org/software/guile/ > That’s awesome! Thank you for your work! > >> Changes in 3.0.0 (since the stable 2.2 series): > … >> ** Just-in-time code generation >> >> Guile programs now run up to 4 times faster, relative to Guile 2.2, >> thanks to just-in-time (JIT) native code generation. Notably, this >> brings the performance of "eval" as written in Scheme back to the level >> of "eval" written in C, as in the days of Guile 1.8. > This is awesome! I hope it finally alleviates the problems faced by Lilypond! > >> ** Interleaved internal definitions and expressions allowed > I love that! It removes one of the early stumbling points I had with > Guile which pushed me to avoid inner defines. I only realized later how > much more readable code gets with inner defines. > > Can we get this into the Scheme standard, too? > >> ** `guard' no longer unwinds the stack for clause tests >> >> SRFI-34, and then R6RS and R7RS, defines a `guard' form that is a >> shorthand for `with-exception-handler'. The cond-like clauses for the >> exception handling are specified to run with the continuation of the >> `guard', while any re-propagation of the exception happens with the >> continuation of the original `raise'. > … >> Guile now works around these issues by running the test portion of the >> guard expressions within the original `raise' continuation, and only >> unwinding once a test matches. This is an incompatible semantic change >> but we think the situation is globally much better, and we expect that >> very few people will be affected by the change. > Is this semantic change a change from previous Guile or a deviation from > the Scheme standard? > > Best wishes, > Arne > -- > Unpolitisch sein > heißt politisch sein > ohne es zu merken > -- - Linus Björnstam