NEWS for Ruby 1.9.3¶ ↑
本文件列出了版本之间用户可见的功能变更,不包括错误修复。
请注意,每个条目都非常简短,没有提供任何原因或参考信息。有关所有充分信息的更改完整列表,请参阅 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 的乘法算法。现在,这种大型 Bignum 使用 Toom-3 算法进行乘法。
-
-
-
新编码
-
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#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
。 -
-
零和隐式精度已弃用。此功能将在 bigdecimal 的下一个版本中删除。
-
不支持负精度。请注意,这是一个不兼容的更改。
-
-
-
日期
-
显式接受浮点数,但有限制。
-
如果给定的偏移量是浮点数,
DateTime
假设其精度最多为秒。DateTime.new(2001,2,3,0,0,0,3.0/24)
==DateTime.new
(2001,2,3,0,0,0,‘+03:00’)#=> true
-
如果给定的 -/+ 操作数是浮点数,
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 返回 [row, column] 并且可以迭代元素的子集
-
Matrix#** 实现
Numeric
指数(使用特征系统) -
Matrix.zero 可以构建矩形矩阵
-
-
-
minitest
-
Minitest 已更新至版本 2.2.2。
-
有关完整详细信息,请参阅 github.com/seattlerb/minitest/blob/master/History.txt
-
-
net/http
-
支持 HTTPS 的 SNI(服务器名称指示)。
-
允许配置在发送 HTTP 请求主体之前等待服务器返回“100 继续”响应。
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 证书的主题公钥信息)。向后兼容性通过创建期间(已经存在的)回退来确保。
-
OpenSSL::ASN1::Constructive#new 和 OpenSSL::ASN1::Primitive#new(以及它们的子类的构造函数)将不再强制将标记设置为 :EXPLICIT,当 tag 和/或 tag_class 作为参数传递时。必须显式设置标记。
-
通过 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.