信息-菜单
[顶部][所有列表]
高级

[上一个日期][下一个日期][上一个线程][下一个线程][日期索引][螺纹索引]

GNU Guile 3.0.8发布


发件人: 安迪·温戈
主题: GNU Guile 3.0.8发布
日期: 2022年2月11日星期五08:47:48+0100
用户代理: Gnus/5.13(Gnus v5.13)Emacs/27.1(gnu/linux)

我们很高兴宣布GNU Guile 3.0.8版,这是3.0稳定版本系列。Guile 3.0.8版本混合了以下维护和优化自上一个3.0.7稳定版本于2021年5月发布以来。请参阅邮件末尾的新闻摘要可获取完整的详细信息。与之前的稳定系列(2.2.x)相比,Guile 3.0增加了支持用于即时生成本机代码,加快所有Guile程序的速度。Guile网页位于http://gnu.org/software/guile/、和除其他外,它还包含Guile手册的副本和指针更多资源。Guile是Scheme编程语言的一个实现用于各种环境。除了实施根据R5RS、R6RS和R7RS方案标准,Guile可以完全访问POSIX系统调用,网络支持,多线程,动态链接,一个外部函数调用接口,强大的字符串处理,以及HTTP客户端和服务器实现。Guile可以作为脚本解释器和Scheme交互运行编译器转换为VM字节码。它还打包为库,以便应用程序可以很容易地包含一个完整的Scheme解释器/VM。应用程序可以使用Guile作为扩展语言强大的配置语言,或作为连接的多功能“粘合剂”应用程序提供的原语。很容易调用Scheme代码从C代码开始,反之亦然。应用程序可以添加新功能、数据类型、控制结构甚至Guile语法,以创建针对手头任务定制的特定于域的语言。Guile 3.0.8可以与Guile 2.2.x并行安装;看见http://www.gnu.org/software/guile/manual/html_node/Parallel-Installations.html.以下是关于如何获取Guile来源。以下是压缩源:http://ftp.gnu.org/gnu/guile/guile-3.0.8.tar.lz(6百万)http://ftp.gnu.org/gnu/guile/guile-3.0.8.tar.xz(6MB)http://ftp.gnu.org/gnu/guile/guile-3.0.8.tar.gz(10MB)以下是GPG分离的签名[*]:http://ftp.gnu.org/gnu/guile/guile-3.0.8.tar.lz.sig
  http://ftp.gnu.org/gnu/guile/guile-3.0.8.tar.xz.sig
  http://ftp.gnu.org/gnu/guile/guile-3.0.8.tar.gz.sig使用镜像获得更高的下载带宽:http://www.gnu.org/order/ftp.html以下是SHA256校验和:96f5263f89dda2d757fe1129e489e672f5a0b7540ee6710ec7ef352120daf52桂林-3.0.8.tar.lzdaa7060a56f2804e9b74c8d7e7fe8beed12b43aab2789a38585183fcc17b8a13桂林-3.0.8.tar.xzf5ae0c26e911af1b5005292d4f56621879f74d6958b30741cf67d8b6 2016年2月桂林-3.0.8.tar.gz[*]使用.sig文件验证相应的文件(没有.sig后缀)是完整的。首先,确保下载两个.sig文件以及相应的tarball。然后,运行如下命令:gpg—验证guile-3.08.tar.gz.sig如果该命令因您没有所需的公钥而失败,然后运行此命令导入它:gpg--密钥服务器密钥.gnupg.net--recv-keys4FD4D288D445934E0A14F9A5A8803732E4436885并重新运行“gpg--verify”命令。此版本是使用以下工具启动的:自动控制2.71汽车制造1.16.2库工具2.4.6格努利布v0.1-4855-g8f4538a53dMakeinfo 6.7公司新闻摘录如下。3.0.8中的变更(自3.0.7起):*显著变化**跨模块内联尽管在历史上Guile将模块视为美化的散列表中,大多数模块实际上是_declarative_——它们只是定义函数和变量,并将其提供给其他模块使用,以及不要将模块作为一级对象进行操作。参见“声明性有关更多讨论,请参阅手册中的“模块”。自3.0.0版以来,Guile利用了声明语义以允许顶级定义在其在相同的编译单元,前提是从未分配绑定,并且定义了一次。Guile 3.0.8对此进行了扩展,允许导出的声明性定义内联到其他模块中。此工具对用户来说基本上是透明的,并且在默认值-O2优化级别。“小”定义可用于跨模块内联(-Oinlinable-exports,包括在-O2)。这个实际的内联决策由Guile的部分求值过程执行(-Opeval的-Ocross-module内联修饰符,也包括在-O2中),取决于工作量和规模增长计数器。但请注意,与宏一样,当模块a中的定义发生变化时,使用该定义的单独编译模块B没有自动重新编译。这是Guile的一个限制,我们希望修复。另一个限制是,跨模块内联仅适用于从已经在-O2(或否则使用-Oinlinable-exports)。在确定是否默认启用此功能时,我们权衡了过时的内联绑定的可用性问题与允许模块边界不再是优化边界,我们最后出现在等式的“让我们做吧!”一边。然而,我们欢迎用户关于默认行为的反馈,直到在这种情况下,我们对编译后的文件何时过时有了正确的概念或者没有。**避免使用自定义GMP分配器在Guile 3.0.6中,我们修复了Guile使用Guile用来实现bignums(大整数)、GMP的库(https://gmplib.org网站).  请参阅Guile 3.0.6发行说明。然而,这给我们留下了一个次优的Guile,其中每个大整数都必须具有释放GMP分配的内存的终结器。决赛需要时间和空间,因此它们限制了分配速率,从而导致bignum性能下降。虽然可以设置环境变量以返回更老、更快的行为,它不是默认的。在Guile 3.0.8中,我们通过避免嵌入来全面解决此问题GMP的mpz_t值以Guile bignums表示。相反,我们嵌入了bignum数字直接地,避免了对终结器或自定义分配器的需要。这个不再需要GUILE_INSTALL_GMP_MEMORY_FUNCTIONS环境Guile 3.0.6发行说明中提到的变量。我们也不赞成scminstallgmpmemoryfunctions变量。*新的界面和功能**(srfi srfi-4 gnu)中的类型化矢量复制函数函数“u8vector-copy”“s8vector-copy”`s16vector-copy“u32vector-covey”“s32vector-copy”“u64vector-compy”`s64矢量复制“f32矢量复制”“f64矢量复制”“c32矢量复制”`c64vector-copy“u8vector-cype!”`s8vector-copy!'`u16矢量复制!'`s16矢量复制!'`u32vector-copy!'`s32矢量复制!'`u64矢量复制!'`s64矢量复制!'`f32vector-copy!'`f64矢量复制!'`c32vector-copy!'`c64矢量复制!'已经是补充。请参阅本手册中的“SRFI-4-Guile extensions”。**新功能srfi-4-矢量-类型-size in(srfi-srfi-4-gnu)请参阅本手册中的“SRFI-4-Guile extensions”。**“bytevector-fill!”支持通过可选参数进行部分填充这是r6rs程序的扩展。参见“操纵手册中的“字节向量”。**“矢量复制!”和核心中包含的(rnrs base)中的“矢量复制”与以前的版本相比,这些版本接受范围参数。请参见手册中的“访问和修改矢量内容”。**新函数bitvector-copy请参阅手册中的“位向量”。**(系统外部)支持C99复杂类型类型“complex-float”和“complex-double”代表C99“float”_Complex和double_Complex。*其他新优化**更好地优化“letrec”右侧的“let”**允许对“expt”调用进行常量折叠感谢Maxime Devos。**添加、优化cps REPL元命令此元命令类似于优化,但处于较低级别。**改进通用子表达式消除中的别名分析**避免对已知过程的类型良好的调用进行参数计数检查这加快了对词汇绑定过程的调用。**避免对known-return-arity过程调用进行返回值计数检查这个新的优化在-O2下启用,可以加快从调用到词汇约束的过程。*生成系统更改**更新Gnulib(bugs.gnu.org/49930)将gnulib更新为8f4538a53d64054ae2fc8b86c0f87c418c6176e6。**如果可用,使用-flto编译libguile默认情况下,如果编译器支持通过-flto标志,Guile将其添加到CFLAGS。这导致了诽谤这大约要小15%。传递--disable-lto以配置到抑制这种行为。**tarball中附带的一组预构建.go文件Guile在其tarball中包含构建的Scheme文件以加快构建速度,对于不太关心再现性的临时建筑商而言。然而,它们占用了大量空间,我们现在已将其缩减为最小集。一如既往,您可以删除它们并完全构建通过“make-C prebuild clean”从源代码开始。*新的弃用**向量函数需要向量参数传递不是向量的数组(用于“(vector?array)”的数组返回false)到函数“vector-move-left!”`向量向右移动!',`vector->list”和“vector-copy”已弃用。使用“array-copy!”,`array-copy和array->list。**“scm_from_contigous_typed_array”已弃用此函数是在Guile 2.x系列中添加的,但没有记录在案,不再在Guile中使用。**弃用“简单向量”概念,`scm_is_simple_vector'这个概念意味着表示“不是数组切片的向量”。使用scm_is_vector。**取消内部连续数组标志我们仍然为国旗保留空间,以保护ABI,但它没有效果。因此,我们还删除了内部SCM_I_ARRAY_CONTIGUOUS,SCM_SET_ARRAY_CONTIGUOUS_FLAG、SCM_CLR_ARRAY_CONTIUOUS_LAG、,SCM_I_ARRAY_CONTP预处理器接口,因为它们是内部的再也没有合理的使用方法了。**取消符号属性符号过去有一个“功能槽”和一个“属性槽”,继承从Emacs Lisp和早期的Lisp访问'symbol-pref','symbol-fref','符号集!',和“符号集!”。这些不鼓励使用程序来支持对象属性;他们是现在已弃用。这为每个符号节省了几个单词的内存。*错误修复**修复(ash x N)的编译,其中N是文字,位于-O1及以下**Texinfo和XML解析器现在是线程安全的(bugs.gnu.org/51264)**修复(ice-9 readline)中的“filename-completion-function”**修复trace-calls-to-procedure(bugs.gnu.org/43102,bugs.gnu.org/48412)**修复nftw函数中的错误(bugs.gnu.org/44182)**修复eq-constant中CSE中的优化错误?如果两个分支相同**用无效的keymaps修复readline初始化**修复读取#nil时的崩溃(bugs.gnu.org/49305)**修复读取#{}}#时的读取错误。**修复国外图书馆设施中的达尔文主机检测。**修复“match”中(x…)模式的统一**修复“format”中带前导零的缩放浮点**改进对r7rs-style`(srfi N)'和r6rs-style `(srfi:N)的支持模块名称(bugs.gnu.org/39601,bugs.gnu.org/40371)**添加对ARC架构的支持(bugs.gnu.org/48816)**构建const strerror结果的修复(bugs.gnu.org/43987)**修复SRFI文档中的输入错误(bugs.gnu.org/50127)**在“recvfrom!”中修复边界检查(bugs.gnu.org/45595)**添加对riscv32的支持**将“ash”限制为左移2^32位(bugs.gnu.org/48150)**修复heap-numbers-equal中的类型混淆?来自VM的调用衷心感谢Jakub Wojciech、Robin Green、Daniel Llorens、MatijaObid、铑蟾蜍、罗伯·布朗宁、马克西姆·德沃斯、阿列克斯·康奇洛·弗拉奎,Timothy Sample、d4ryus、Fabrice Fontaine、Taylan Kammer、Vineet Gupta、,菲利普·克劳斯·克劳斯(Philipp Klaus Krause)、阿伦·艾萨克(Arun Isaac)和亚历克斯·希恩(Alex Shinn)。

通过电子邮件回复至

[线程中的上一个] 当前线程 [线程中的下一个]