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 的大位数 Bignums 的乘法算法进行了更改。现在,这种大型 Bignums 使用 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/util
-
添加了 BigDecimal#to_d 和 Integer#to_d。
-
Float#to_d 接受精度。
-
Rational#to_d 在传递零或负精度时引发
ArgumentError
。 -
Rational#to_d
-
零和隐式精度已弃用。此功能将在 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
-
新方法
-
IO#noecho {|io| }
-
IO#echo=
-
IO#echo?
-
IO#raw {|io| }
-
IO#raw!
-
IO#getch
-
IO#winsize
-
IO.console
-
-
-
json
-
更新至 v1.5.4。
-
-
矩阵
-
新类
-
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
-
支持 SNI(服务器名称指示)用于 HTTPS。
-
允许配置在发送 HTTP 请求主体之前等待服务器返回“100 continue”响应。设置 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
-
新方法
-
ObjectSpace::memsize_of_all
-
-
-
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 自动补全。
-
-
耙子
-
耙子已从 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
-
新方法
-
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.