Ruby 1.9.2 的 NEWS¶ ↑
本文档列出了版本之间用户可见的功能更改,但不包括错误修复。
请注意,每个条目都保持简短,没有提供背后的原因或参考信息。有关包含所有足够信息的完整更改列表,请参阅 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 上,当前目录不再像其他平台那样隐式地添加到默认命令搜索路径中。
-
-
-
-
新方法
-
-
-
扩展方法
-
Float() 支持十六进制浮点格式。
-
printf() 支持 %a/%A 格式。
-
-
-
-
新方法
-
扩展方法
-
Proc#source_location
即使接收器是由 attr_reader / attr_writer / attr_accessor 定义的方法,也会返回位置。
-
-
-
-
扩展方法
-
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
-
对于无效的源制作,引发异常而不是返回 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 在更多平台上运行良好。
-
-
-
libffi 的轻量级包装器。
-
-
-
libyaml 的包装器。
-
-
-
更新到
JSON
1.1.9
-
-
REXML
-
REXML::Document.entity_expansion_limit=
设置实体扩展限制的新方法。 默认情况下,该限制设置为 10000。有关详细信息,请参见以下 URL。
www.ruby-lang.org/en/news/2008/08/23/dos-vulnerability-in-rexml/
-
-
-
更新到
RDoc
2.5.8
-
-
RubyGems
-
更新到 RubyGems 1.3.7
-
-
logger
-
导入上游版本 (logger/1.2.7)
-
即使日志写入失败,也不会引发异常。
-
如果已存在旧文件,则不会引发 ShiftingError。(从 1.2.7 开始不会引发 ShiftingError,只会发出 warn())
-
-
-
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
的第 3 个参数现在是可选的。 -
Socket.pair
的第 3 个参数现在是可选的。 -
Socket.pair
和UNIXSocket.pair
可以接受一个代码块。 -
BasicSocket#send
、UDPSocket#send
、Socket.getnameinfo
、Socket#bind
和 Socket#{connect,connect_nonblock} 接受Addrinfo
对象作为 sockaddr。 -
Socket.getaddrinfo
和 IPSocket#{addr,peeraddr} 接受一个可选参数以打开/关闭反向查找。 -
常量名称也可以接受,就像常量值一样。即
Socket.new
(:PF_INET, :SOCK_STREAM, 0) 可以指定不带前缀的常量名称。 即Socket.new
(:INET, :STREAM, 0)-
协议/地址族
-
套接字类型
-
套接字选项协议级别
-
套接字选项名称
-
shutdown 的参数
-
-
-
-
stringio
-
新方法
-
StringIO#read_nonblock
-
-
-
pathname
-
新方法
-
扩展方法
-
Pathname#realpath
和Pathname#realdirpath
接受可选的 basedir 参数。
-
-
-
-
新方法
-
Readline.set_screen_size
-
Readline.get_screen_size
-
-
扩展方法
-
Readline.completion_proc= 接受 nil。nil 表示使用默认的补全过程。
-
-
-
set
-
time
-
不兼容的更改
-
Time.parse
在没有日期信息时会抛出ArgumentError
。
-
-
-
thread
-
扩展方法
-
ConditionVariable#wait 接受超时参数。
-
-
-
securerandom
-
新方法
-
SecureRandom.urlsafe_base64
-
-
-
-
新方法
-
已过时的方法
-
URI.decode
-
URI.encode
-
URI.escape
-
URI.unescape
-
-
-
etc
-
zlib
-
rbconfig
-
新方法
-
语言变更¶ ↑
-
Regexp
属性 (p{}) 名称现在忽略下划线、空格和大小写,因此 p{ol chiki} 与 p{Ol_Chiki} 相同。 -
正则表达式现在支持 Unicode 5.2(新字符和脚本)。
-
d、s 和 w 现在仅限 ASCII;对于 Unicode 语义,请使用 POSIX 方括号类和 p{}。
-
$: 不再包含当前目录,请使用 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 选项。
兼容性问题(不包括功能性错误修复)¶ ↑
* 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.