NEWS for Ruby 1.9.2¶ ↑
本文件列出了版本之间用户可见的功能更改,不包括错误修复。
请注意,每个条目都保持非常简短,没有提供任何原因或参考信息。有关包含所有足够信息的完整更改列表,请参阅 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
-
-
新方法
-
-
-
新方法
-
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} 的年份参数现在被解释为值本身。例如,Time.utc(99)
表示公元 99 年,而不是公元 1999 年。
-
-
-
-
摘要
-
新方法
-
Digest::HMAC (digest/hmac) 已被标记为已弃用,因为实验库意外包含在 1.9.1 的最终版本中。请改用
OpenSSL::HMAC
。
-
-
RSS
-
0.2.4 -> 0.2.7.
-
RSS::Maker.make
-
对于无效的提要制作,会抛出异常,而不是返回 nil。
-
需要块。
-
-
RSS::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,而是发出警告())
-
-
-
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
-
pathname
-
新方法
-
扩展方法
-
Pathname#realpath
和Pathname#realdirpath
接受可选的 basedir 参数。
-
-
-
-
新方法
-
Readline.set_screen_size
-
Readline.get_screen_size
-
-
扩展方法
-
Readline.completion_proc= 接受 nil。nil 表示使用默认的完成过程。
-
-
-
set
-
time
-
不兼容的更改
-
Time.parse
当没有日期信息时会引发ArgumentError
。
-
-
-
线程
-
扩展方法
-
ConditionVariable#wait 接受超时参数。
-
-
-
安全随机数
-
新方法
-
SecureRandom.urlsafe_base64
-
-
-
-
新方法
-
已弃用方法
-
URI.decode
-
URI.encode
-
URI.escape
-
URI.unescape
-
-
-
等等
-
zlib
-
rbconfig
-
新方法
-
语言变更¶ ↑
-
Regexp
属性 (p{}) 名称现在忽略下划线、空格和大小写,因此 p{ol chiki} 与 p{Ol_Chiki} 相同。 -
正则表达式现在支持 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 选项。
兼容性问题(不包括功能错误修复)¶ ↑
* 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.