Ruby 1.9.3 的 NEWS¶ ↑
本文档是发布版本之间用户可见的功能更改列表,不包括错误修复。
请注意,每个条目都保持简短,不提供背后的原因或参考信息。有关包含所有足够信息的完整更改列表,请参阅 ChangeLog 文件。
自 1.9.2 版本以来的更改¶ ↑
许可¶ ↑
-
Ruby 的许可证从 GPLv2 双许可证更改为 2 条款 BSDL 双许可证。
已知的平台相关问题¶ ↑
OS X Lion¶ ↑
-
如果您使用的是 Xcode 4.1,则必须使用 “–with-gcc=gcc-4.2” 配置 ruby,或者,如果您使用的是 Xcode 4.2,则必须使用 “–with-gcc=clang” 配置 ruby。
C API 更新¶ ↑
-
rb_scan_args() 增强了对选项哈希参数提取的支持。
-
添加了 ruby_vm_at_exit()。这使扩展库可以挂钩 VM 终止。
-
添加了 rb_reserved_fd_p()。如果要关闭所有文件描述符,请使用此 API 进行检查。 [ruby-core:37759]
库更新(仅列出重要的)¶ ↑
-
内置类
-
-
扩展方法
-
Array#pack
支持字节序修饰符
-
-
-
Bignum
-
为了减少计算时间,更改了超过 150 个 BDIGIT 的具有大量数字的 Bignum 的乘法算法。现在,使用 Toom-3 算法将如此大的 Bignum 相乘。
-
-
-
新编码
-
CP950
-
CP951
-
UTF-16
-
UTF-32
-
-
更改别名
-
SJIS 是 Windows-31J
-
-
-
-
新常量
-
File::NULL NULL 设备名称。
-
File::DIRECT O_DIRECT 的名称。
-
-
-
-
将 __id__ 移至
BasicObject
。 -
扩展方法
-
Kernel#rand
支持范围参数
-
-
-
-
扩展方法
-
Random.rand
支持范围参数
-
-
-
-
扩展方法
-
String#unpack
支持字节序修饰符
-
-
新方法
-
-
-
扩展方法
-
Time#strftime
支持 %:z 和 %::z。
-
-
-
-
如果平台不支持补充组概念,则 Process#maxgroups 和 Process#maxgroups= 现在会引发
NotImplementedError
。
-
-
bigdecimal
-
BigDecimal#power 和 BigDecimal#** 支持非整数指数。
-
Kernel.BigDecimal
和BigDecimal.new
现在接受Integer
、Rational
、Float
和BigDecimal
的实例。如果您将Rational
或Float
传递给它们,则必须指定精度以生成BigDecimal
的数字。 -
BigDecimal#coerce 与
Rational
的行为已更改。它使用接收器BigDecimal
的精度,从给定的Rational
生成BigDecimal
的数字。
-
-
bigdecimal/util
-
添加了 BigDecimal#to_d 和 Integer#to_d。
-
Float#to_d 接受精度。
-
当传递零或负精度时,Rational#to_d 引发
ArgumentError
。 -
Rational#to_d
-
已弃用零和隐式精度。此功能在 bigdecimal 的下一个版本中删除。
-
不支持负精度。请注意,这是一个不兼容的更改。
-
-
-
date
-
显式接受 flonum,但有限制。
-
如果给定的偏移量是 flonum,则
DateTime
假设其精度最多为秒。DateTime.new(2001,2,3,0,0,0,3.0/24)
==DateTime.new
(2001,2,3,0,0,0,'+03:00')#=> true
-
如果 -/+ 的给定操作数是 flonum,则
DateTime
假设其精度最多为纳秒。DateTime.new(2001,2,3)
+ 0.5 ==DateTime.new(2001,2,3,12)
#=> true
-
偏移量的精度始终最多为秒。
Rational('0.5') == Rational('0.500001') #=> false
DateTime.new
(2001,2,3,0,0,0,Rational('0.5')) ==DateTime.new
(2001,2,3,0,0,0,Rational('0.500001'))#=> true
-
-
忽略长偏移量和远改革日(带有警告)。
-
现在仅接受
-1<=offset<=1 (-24:00..+24:00) 2298874<=start<=2426355 或 -/+oo
(proleptic Gregorian/Julian mean -/+oo)
-
-
strftime 方法无法生成巨大的输出(与 Time 的方法相同)。
-
即使 Date/DateTime 可以处理遥远的日期,以下也会导致异常。
DateTime.new(1<<10000)
.strftime('%Y') # Errno::ERANGE
-
-
更改了 inspect 的格式。
-
更改了 marshal 的格式(但是,可以加载旧的转储)。
-
-
io/console
-
json
-
更新到 v1.5.4。
-
-
matrix
-
新类
-
Matrix::EigenvalueDecomposition
-
Matrix::LUPDecomposition
-
-
新方法
-
Matrix#diagonal?
-
Matrix#eigen
-
Matrix#eigensystem
-
Matrix#hermitian?
-
Matrix#lower_triangular?
-
Matrix#lup
-
Matrix#lup_decomposition
-
Matrix#normal?
-
Matrix#orthogonal?
-
Matrix#permutation?
-
Matrix#round
-
Matrix#symmetric?
-
Matrix#unitary?
-
Matrix#upper_triangular?
-
Matrix#zero?
-
Vector#magnitude, norm
-
Vector#normalize
-
-
扩展方法
-
Matrix#each 和 each_with_index 可以迭代元素的子集
-
Matrix#find_index 返回 [行, 列] 并且可以迭代元素的子集
-
Matrix#** 实现
Numeric
指数(使用本征系统) -
Matrix.zero 可以构建矩形矩阵
-
-
-
minitest
-
Minitest 已更新至 2.2.2 版本。
-
有关完整详细信息,请参阅 github.com/seattlerb/minitest/blob/master/History.txt
-
-
net/http
-
支持 HTTPS 的 SNI(服务器名称指示)。
-
允许配置为在发送 HTTP 请求主体之前等待服务器返回 ‘100 continue’ 响应。
Set
Net::HTTP#continue_timeout
并将 ‘expect’ => ‘100-continue’ 传递给额外的 HTTP 标头。例如,以下代码发送 HTTP 标头并等待获取 ‘100 continue’ 响应,然后再发送 HTTP 请求主体。当发生 0.5 [秒] 超时或服务器发送 ‘100 continue’ 时,客户端发送 HTTP 请求主体。
http.continue_timeout = 0.5 http.request_post('/continue', 'body=BODY', 'expect' => '100-continue')
-
新方法
-
Net::HTTPRequest#set_form
):已添加以支持 application/x-www-form-urlencoded 和 multipart/form-data。
-
-
-
objspace
-
openssl
-
PKey::RSA 和 PKey::DSA 现在在将公钥导出为 DER 或 PEM 时使用通用的 X.509 编码方案(例如,在 X.509 证书的主题公钥信息中使用)。通过创建期间的(已存在的)回退来确保向后兼容性。
-
当将 tag 和/或 tag_class 作为参数传递时,OpenSSL::ASN1::Constructive#new 和 OpenSSL::ASN1::Primitive#new(以及它们的子类的构造函数)将不再强制将标记设置为 :EXPLICIT。必须显式设置标记。
-
支持通过 infinite_length 属性进行无限长度编码。
-
OpenSSL::PKey.read
(file | string [, pwd]) 允许读取 DER-/PEM 编码格式的任意公钥/私钥,并可以选择用于加密 PEM 编码的密码。 -
添加新方法
OpenSSL::X509::Name#hash_old
作为OpenSSL
1.0.0 定义的 X509_NAME_hash_old() 的包装器。它返回与OpenSSL
0.9.8 兼容的哈希值。
-
-
optparse
-
支持 bash/zsh 补全。
-
-
Rake
-
Rake 已从 0.8.7 升级到 0.9.2.2。有关完整的发行说明,请参阅 github.com/jimweirich/rake/blob/master/CHANGES
-
-
-
RDoc
已升级到 3.9.4 版本。有关完整的发行说明,请参阅 docs.seattlerb.org/rdoc/History_txt.html
-
-
rexml
-
支持 Ruby 原生编码机制,并删除了 iconv 依赖项。
-
-
RubyGems
-
RubyGems 已升级到 1.8.10 版本。有关完整的发行说明,请参阅 rubygems.rubyforge.org/rubygems-update/History_txt.html
-
-
stringio
-
扩展方法
-
StringIO#set_encoding
可以接收第二个参数以及可选的哈希。
-
-
-
test/unit
-
新的参数
-
-j N, –jobs=N: 允许同时运行 N 个测试用例。
-
–jobs-status: 并行运行时显示任务状态。
-
–no-retry: 并行运行时,不要重试失败的测试用例。
-
–ruby=RUBY: 用于任务(工作进程)的 ruby 路径,可选。
-
–hide-skip: 隐藏跳过信息。您将在测试结果末尾看到跳过的次数。
-
-
-
uri
-
webrick
-
新方法
-
WEBrick::HTTPRequest#continue 用于生成 '100 continue' 响应。
-
-
新的日志指令
-
%{remote}p 用于远程(客户端)端口号。
-
-
-
yaml
-
zlib
-
-
扩展方法
-
FileUtils#chmod
支持符号模式参数。
-
-
语言变更¶ ↑
-
正则表达式现在支持 Unicode 6.0。(新的字符和脚本)
- 实验性
-
正则表达式现在支持 Age 属性。
与 Perl 不同,当前的实现采用对 UTS #18 的解释的解释。www.unicode.org/reports/tr18/
-
使用指令打开/关闭缩进警告。(“# -*- warn-indent: true -*-” / “# -*- warn-indent: false -*-”)
兼容性问题(不包括功能错误修复)¶ ↑
* Rational#to_d See above.