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? 可以用于检测未实现的方法。例如,Process.respond_to?(:fork) 在 Windows 上返回 false。
-
-
不兼容的更改
-
Kernel#instance_eval 产生接收者。
-
Kernel#‘ (`…`) ..etc.
在 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::Class.base64digest
-
Digest::Instance#base64digest
-
Digest::Instance#base64digest!
-
-
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 在更多平台上运行良好。
-
-
Fiddle
-
libffi 的轻量级包装器。
-
-
YAML
-
如果可用,现在使用 libyaml 作为后端。这意味着 YAML 库支持 YAML 的新标准。
-
-
Psych
-
libyaml 的包装器。
-
-
JSON
-
更新到 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
-
新方法
-
Open3.popen2
-
Open3.popen2e
-
Open3.capture3
-
Open3.capture2
-
Open3.capture2e
-
Open3.pipeline_rw
-
Open3.pipeline_r
-
Open3.pipeline_w
-
Open3.pipeline_start
-
Open3.pipeline
-
-
-
pty
-
新方法
-
PTY.open
-
PTY.check
-
-
已弃用的方法
-
protect_signal
-
reset_signal
-
-
-
openssl
-
新方法
-
OpenSSL::Buffering#read_nonblock
-
OpenSSL::Buffering#write_nonblock
-
OpenSSL::SSL::SSLSocket#connect_nonblock
-
OpenSSL::SSL::SSLSocket#accept_nonblock
-
-
-
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 现在默认开启。
-
-
新类
-
Addrinfo
-
Socket::Option
-
Socket::AncillaryData
-
-
新方法
-
Socket.ip_address_list
-
Socket.tcp
-
Socket.tcp_server_loop
-
Socket.tcp_server_sockets
-
Socket.udp_server_sockets
-
Socket.udp_server_loop_on
-
Socket.udp_server_loop
-
Socket.unix
-
Socket.unix_server_loop
-
Socket.unix_server_socket
-
Socket.accept_loop
-
Socket#ipv6only!
-
BasicSocket#local_address
-
BasicSocket#remote_address
-
BasicSocket#connect_address
-
BasicSocket#sendmsg
-
BasicSocket#sendmsg_nonblock
-
BasicSocket#recvmsg
-
BasicSocket#recvmsg_nonblock
-
BasicSocket#getpeereid
-
-
扩展方法
-
Socket.new 的第 3 个参数现在是可选的。
-
Socket.pair 的第 3 个参数现在是可选的。
-
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#binread
-
Pathname#realdirpath
-
Pathname#each_child
-
-
扩展方法
-
Pathname#realpath 和 Pathname#realdirpath 接受可选的 basedir 参数。
-
-
-
Readline
-
新方法
-
Readline.set_screen_size
-
Readline.get_screen_size
-
-
扩展方法
-
Readline.completion_proc= 接受 nil。nil 表示使用默认的补全 proc。
-
-
-
set
-
新方法
-
Set#keep_if
-
Set#select!
-
-
-
time
-
不兼容的更改
-
当没有日期信息时,Time.parse 会抛出
ArgumentError
异常。
-
-
-
thread
-
扩展方法
-
ConditionVariable#wait 接受 timeout 参数。
-
-
-
securerandom
-
新方法
-
SecureRandom.urlsafe_base64
-
-
-
URI
-
新方法
-
URI.encode_www_form
-
URI.decode_www_form
-
URI.encode_www_form_component
-
URI.decode_www_form_component
-
-
已过时的方法
-
URI.decode
-
URI.encode
-
URI.escape
-
URI.unescape
-
-
-
etc
-
新方法
-
Etc::Passwd.each
-
Etc::Group.each
-
-
-
zlib
-
新方法
-
Zlib::GzipFile#path
-
Zlib.#adler32_combine
-
Zlib.#crc32_combine
-
-
-
rbconfig
-
新方法
-
RbConfig.ruby
-
-
语言更改¶ ↑
-
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.