NEWS Ruby 1.9.2
本文档是除 bug 修复之外,在版本发布之间所做的用户可见功能更改的列表。
请注意,每个条目都保持得非常简短,没有提供原因或参考信息。有关所有信息的完整更改列表,请参阅 ChangeLog 文件。
自 1.9.1 版本以来的变更
库更新(仅列出重要的)
-
内置类
-
-
新方法
-
扩展方法
-
Array#{uniq,uniq!,product} 可以接受块。
-
-
-
-
新方法
-
-
-
新编码
-
Big5
-
Big5-UAO
-
ISO-2022-JP-KDDI
-
SJIS-DoCoMo
-
SJIS-KDDI
-
SJIS-SoftBank
-
UTF8-DoCoMo
-
UTF8-KDDI
-
UTF8-SoftBank
-
-
新方法
-
ascii_compatible?
-
-
-
-
新方法
-
扩展方法
-
with_index 接受一个可选参数,用于指定开始索引号,默认为 0。
-
-
不兼容的更改
-
rewind 现在会调用已定义的可嵌入对象的“rewind”方法。
-
next 在结束时不再清除位置。
-
-
-
-
使用区域设置的编码
-
ENV.[]=在失败时会引发 Errno::{EINVAL,ENOMEM} 等异常。 -
新方法
-
-
-
新常量
-
Float::INFINITY
-
Float::NAN
-
-
新方法
-
-
GC::Profiler
-
新方法
-
GC::Profiler.total_time
-
-
-
-
新方法
-
IO#codepoints
-
扩展方法
-
IO.pipe可以接受块。
-
-
新模块
-
IO::WaitWritable用于扩展非阻塞异常。
-
-
-
新方法
-
Kernel#respond_to_missing?
-
Kernel#singleton_class
-
-
扩展方法
-
Kernel#respond_to? 可用于检测未实现的方法。例如,在 Windows 上 Process.respond_to?(:fork) 返回 false。
-
-
不兼容的更改
-
Kernel#instance_eval 产生接收者。
-
Kernel#`(‘…`) ..等。在 Windows 上,与其它平台一样,当前目录不再隐式地添加到默认命令搜索路径之前。
-
-
-
-
新方法
-
-
Method
-
-
扩展方法
-
Float() 支持十六进制浮点格式。
-
printf() 支持 %a/%A 格式。
-
-
-
-
新方法
-
扩展方法
-
Proc#source_location即使接收者是 attr_reader / attr_writer / attr_accessor 定义的方法,也会返回位置。
-
-
-
Process
-
扩展方法
-
Process.spawn接受 [:child, FD] 作为重定向目标。
-
-
-
Random(生成伪随机数的新类) -
-
扩展方法
-
string[regexp, name] 支持命名捕获。
-
-
-
-
扩展功能
-
time_t 限制已被移除,以便表示 1901 年之前和 2038 年之后。旧日期使用推断公历。
-
Time.new具有可选参数,用于指定带时间偏移的日期。 -
Time#getlocal,Time#localtime具有可选时间偏移参数。
-
-
新方法
-
不兼容的更改
-
Time.{utc,gm,local,mktime} 的 year 参数现在被解释为值本身。例如,
Time.utc(99)表示公元 99 年,而不是公元 1999 年。
-
-
-
-
digest
-
新方法
-
Digest::HMAC (digest/hmac) 已被标记为已弃用,因为实验性库不应包含在 1.9.1 的最终版本中。请改用
OpenSSL::HMAC。
-
-
rss
-
0.2.4 -> 0.2.7.
-
RSS::Maker.make
-
无效 feed 制作时引发异常,而不是返回 nil。
-
需要块。
-
-
RSS::Maker.[]
-
返回 maker 类的で新方法。
-
-
RSS::Maker.supported?(version)
-
检查给定版本是否受支持的新方法。
-
-
RSS::Maker: item.guid.permanent_link?
-
item.guid.isPermaLink 的新别名
-
-
RSS::Maker: item.guid.permanent_link=
-
item.guid.isPermaLink= 的新别名
-
-
-
DL
-
现在使用 libffi 作为后端(如果可用)。这意味着 DL 在更多平台上工作正常。
-
-
Fiddle
-
libffi 的轻量级包装器。
-
-
-
libyaml 的包装器。
-
-
-
更新至
JSON1.1.9
-
-
REXML
-
REXML::Document.entity_expansion_limit=
设置实体扩展限制的新方法。默认限制为 10000。有关详细信息,请参阅以下 URL:
www.ruby-lang.org/en/news/2008/08/23/dos-vulnerability-in-rexml/
-
-
RDoc
-
更新至 RDoc 2.5.8
-
-
RubyGems
-
更新至 RubyGems 1.3.7
-
-
logger
-
导入上游版本 (logger/1.2.7)
-
即使日志写入失败也不引发异常。
-
如果已存在旧文件,则不引发 ShiftingError。(从 1.2.7 开始不会引发 ShiftingError,而是发出警告)
-
-
-
matrix
-
API 更改以严格遵守数学定义
-
矩阵现在必须是矩形的。
-
trace, regular?, singular? 仅为方阵定义
-
支持空矩阵
-
所有整数矩阵现在都有正确的行列式(也是整数)
-
-
Matrix 和 Vector 包含
Enumerable。 -
新方法
-
Matrix.build
-
Matrix.empty
-
Matrix#conj
-
Matrix#conjugate
-
Matrix#each
-
Matrix#each_with_index
-
Matrix#empty?
-
Matrix#imag
-
Matrix#imaginary
-
Matrix#real
-
Matrix#real?
-
Matrix#rect
-
Matrix#rectangular
-
-
-
net/http
-
合并了 net/https。
-
-
open3
-
pty
-
openssl
-
scanf
-
支持 %a/%A 格式。
-
-
socket
-
不兼容的更改
-
Socket#{recvfrom,recvfrom_nonblock,accept,accept_nonblock,sysaccept} 返回一个
Addrinfo对象作为发送方地址,而不是二进制 sockaddr 字符串。Addrinfo#to_s返回旧的二进制 sockaddr 字符串。 -
BasicSocket#getsockopt返回一个Socket::Option对象,而不是二进制字符串。Socket::Option#to_s返回旧的二进制字符串。 -
Socket.do_not_reverse_lookup现在默认开启。
-
-
新类
-
新方法
-
扩展方法
-
Socket.new的第三个参数现在是可选的。 -
Socket.pair的第三个参数现在是可选的。 -
Socket.pair和UNIXSocket.pair可以接受块。 -
BasicSocket#send,UDPSocket#send,Socket.getnameinfo,Socket#bind, 和 Socket#{connect,connect_nonblock} 接受一个Addrinfo对象作为 sockaddr。 -
BasicSocket#getsockopt接受一个Socket::Option对象。 -
Socket.getaddrinfo和 IPSocket#{addr,peeraddr} 接受一个可选参数来开启/关闭反向查找。 -
常量名称可以被接受,常量值也可以。即
Socket.new(:PF_INET, :SOCK_STREAM, 0)。常量名称可以省略前缀。即Socket.new(:INET, :STREAM, 0)-
协议/地址族
-
套接字类型
-
套接字选项协议级别
-
套接字选项名称
-
shutdown 的参数
-
-
-
-
stringio
-
新方法
-
StringIO#read_nonblock
-
StringIO#write_nonblock
-
-
-
pathname
-
新方法
-
扩展方法
-
Pathname#realpath和Pathname#realdirpath接受可选的 basedir 参数。
-
-
-
Readline
-
新方法
-
Readline.set_screen_size
-
Readline.get_screen_size
-
-
扩展方法
-
Readline.completion_proc= 接受 nil。nil 表示使用默认的 completion proc。
-
-
-
set
-
time
-
不兼容的更改
-
Time.parse在没有日期信息时会引发ArgumentError。
-
-
-
thread
-
扩展方法
-
ConditionVariable#wait 接受 timeout 参数。
-
-
-
securerandom
-
新方法
-
SecureRandom.urlsafe_base64
-
-
-
-
新方法
-
已废弃的方法
-
URI.decode
-
URI.encode
-
URI.escape
-
URI.unescape
-
-
-
etc
-
zlib
-
rbconfig
-
新方法
-
语言更改
-
Regexp属性 (p{}) 名称现在忽略下划线、空格和大小写,所以 p{ol chiki} 与 p{Ol_Chiki} 相同 -
Regexps 现在支持 Unicode 5.2(新字符和脚本)
-
d、s 和 w 现在仅限 ASCII;使用 POSIX 方括号类和 p{} 进行 Unicode 语义
-
$: 不再包含当前目录,使用 require_relative
-
禁止存在无效编码的
Symbol。
编译选项
-
–program-prefix 和 –program-suffix 不再作用于共享对象名称或库路径。
使用 –with-rubylibprefix=‘${libruby}/${RUBY_INSTALL_NAME}’ 和 –with-soname=‘${RUBY_INSTALL_NAME}’ 以获得与 Ruby 1.9.1 相同的结果。
-
–with-arch 被添加用于通用二进制文件,而不是 –enable-fat-binary 选项。
兼容性问题(不包括功能性 bug 修复)
* Enumerator#rewind * Socket#recvfrom * Socket#recvfrom_nonblock * Socket#accept * Socket#accept_nonblock * Socket#sysaccept * BasicSocket#getsockopt * Time.utc * Time.gm * Time.local * Time.mktime * Time.parse * --program-prefix and --program-suffix * --enable-fat-binary * $: See above. * Digest::HMAC Deprecated. See above.