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/util
-
添加了 BigDecimal#to_d 和 Integer#to_d。
-
Float#to_d 接受精度。
-
当传递零或负精度时,Rational#to_d 引发
ArgumentError
。 -
Rational#to_d
-
零和隐式精度已被弃用。此功能将在下一个 bigdecimal 版本中删除。
-
不支持负精度。请注意,这是一个不兼容的更改。
-
-
-
date
-
显式接受浮点数,但有局限性。
-
如果给定的偏移量是浮点数,则 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
-
新方法
-
IO#noecho {|io| }
-
IO#echo=
-
IO#echo?
-
IO#raw {|io| }
-
IO#raw!
-
IO#getch
-
IO#winsize
-
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 continue”响应。设置 Net::HTTP#continue_timeout 并且将 “expect” => ‘100-continue’ 传递给额外的 HTTP 标头。
例如,以下代码发送 HTTP 标头,并在发送 HTTP 请求正文之前等待获得“100 continue”响应。当发生 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
-
新方法
-
ObjectSpace::memsize_of_all
-
-
-
openssl
-
PKey::RSA 和 PKey::DSA 现在在将公钥导出为 DER 或 PEM 时使用通用的 X.509 编码方案(例如,在 X.509 证书的 Subject Public Key Info 中使用)。通过创建期间的(已经存在的)回退来确保向后兼容性。
-
当 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:用于作业(worker)进程的 ruby 路径。可选。
-
–hide-skip:隐藏跳过消息。您将在测试结果末尾看到跳过的次数。
-
-
-
uri
-
新方法
-
URI::Generic#hostname
-
URI::Generic#hostname=
-
-
-
webrick
-
新方法
-
WEBrick::HTTPRequest#continue 用于生成“100 continue”响应。
-
-
新的日志指令
-
%{remote}p 用于远程(客户端)端口号。
-
-
-
yaml
-
默认 YAML 引擎现在是 Psych。您可以通过设置 YAML::ENGINE.yamler = 'syck' 来降级到 syck。
-
-
zlib
-
新方法
-
Zlib.deflate
-
Zlib.inflate
-
-
-
FileUtils
-
扩展方法
-
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.