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
支援位元組順序修改器
-
-
-
大整數
-
已變更具 150 個 BDIGIT 以上大量位數的大整數的乘法演算法,以減少其計算時間。現在會使用 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
-
BigDecimal#power
和BigDecimal#**
支援非整數指數。 -
Kernel.BigDecimal
和BigDecimal.new
現在接受Integer
、Rational
、Float
和BigDecimal
的執行個體。如果您傳遞Rational
或Float
給它們,您必須指定精度來產生BigDecimal
的數字。 -
BigDecimal#coerce
使用Rational
的行為已變更。它使用接收者BigDecimal
的精度來產生BigDecimal
的數字,來自指定的Rational
。
-
-
bigdecimal/util
-
新增
BigDecimal#to_d
和Integer#to_d
。 -
Float#to_d
接受精度。 -
Rational#to_d
在傳遞零或負精度時會引發ArgumentError
。 -
-
零和隱含精度已不建議使用。此功能會在 bigdecimal 的下一個版本中移除。
-
不支援負精度。請小心,這是不相容的變更。
-
-
-
date
-
明確接受浮點數,但有其限制。
-
如果指定的偏移量是浮點數,
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
-
json
-
更新至 v1.5.4。
-
-
matrix
-
新類別
-
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
指數(使用 eigensystem) -
Matrix.zero 可以建立矩形矩陣
-
-
-
minitest
-
Minitest 已更新至版本 2.2.2。
-
完整詳細資訊,請參閱 github.com/seattlerb/minitest/blob/master/History.txt
-
-
net/http
-
HTTPS 支援 SNI(伺服器名稱指示)。
-
允許設定在傳送 HTTP 要求主體之前,等待伺服器傳回「100 繼續」回應。
Set
Net::HTTP#continue_timeout
,並將「expect」=>「100-continue」傳遞給額外的 HTTP 標頭。例如,以下程式碼會傳送 HTTP 標頭,並在傳送 HTTP 要求主體之前,等待取得「100 繼續」回應。當發生 0.5 [秒] 超時,或伺服器傳送「100 繼續」時,用戶端會傳送 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
-
openssl
-
PKey::RSA 和 PKey::DSA 現在會在將公開金鑰匯出至 DER 或 PEM 時,使用一般性的 X.509 編碼方式(例如用於 X.509 憑證的主體公開金鑰資訊)。向後相容性是由於建立期間的(已存在的)後備機制所確保的。
-
OpenSSL::ASN1::Constructive#new 和 OpenSSL::ASN1::Primitive#new(及其子類別的建構函式)不再強制將標記設定為 :EXPLICIT,當標記和/或標記類別傳遞為參數時。標記必須明確設定。
-
透過 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 自動完成。
-
-
Rake
-
Rake 已從 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
-
webrick
-
新方法
-
WEBrick::HTTPRequest#continue 用於產生「100 繼續」回應。
-
-
新的記錄指令
-
%{remote}p 用於遠端(用戶端)埠號。
-
-
-
yaml
-
zlib
-
-
延伸方法
-
FileUtils#chmod
支援符號模式參數。
-
-
語言變更¶ ↑
-
正規表示式現在支援 Unicode 6.0。(新的字元和腳本)
- 實驗性
-
正規表示式現在支援年齡屬性。
與 Perl 不同,目前的實作採用 UTS #18 的詮釋。 www.unicode.org/reports/tr18/
-
使用指令開啟/關閉縮排警告。(「# -*- warn-indent: true -*-」/「# -*- warn-indent: false -*-」)
相容性問題(不包含功能錯誤修正)¶ ↑
* Rational#to_d See above.