NEWS für Ruby 1.9.3
Dieses Dokument ist eine Liste der für Benutzer sichtbaren Funktionsänderungen zwischen den Versionen, mit Ausnahme von Fehlerbehebungen.
Beachten Sie, dass jeder Eintrag so kurz gehalten ist, dass kein Grund oder Referenzinformationen angegeben werden. Eine vollständige Liste der Änderungen mit allen ausreichenden Informationen finden Sie in der Datei ChangeLog.
Änderungen seit der Version 1.9.2
Lizenz
-
Die Lizenz von Ruby wird von einer doppelten Lizenz mit GPLv2 zu einer doppelten Lizenz mit 2-Klausel-BSDL geändert.
Bekannte plattformabhängige Probleme
OS X Lion
-
Sie müssen Ruby mit ‚–with-gcc=gcc-4.2‘ konfigurieren, wenn Sie Xcode 4.1 verwenden, oder, wenn Sie Xcode 4.2 verwenden, müssen Sie Ruby mit ‚–with-gcc=clang‘ konfigurieren.
Updates der C-API
-
rb_scan_args() wurde mit Unterstützung für die Extraktion von optionalen Hash-Argumenten erweitert.
-
ruby_vm_at_exit() hinzugefügt. Dies ermöglicht Erweiterungsbibliotheken, das Beenden der VM abzuhaken.
-
rb_reserved_fd_p() hinzugefügt. Wenn Sie alle Dateideskriptoren schließen möchten, überprüfen Sie dies mit dieser API. [ruby-core:37759]
Bibliotheksaktualisierungen (nur herausragende)
-
eingebaute Klassen
-
-
erweiterte Methode
-
Array#packunterstützt Endian-Modifikatoren
-
-
-
Bignum
-
Der Multiplikationsalgorithmus für Bignums mit einer großen Anzahl von Ziffern über 150 BDIGITs wurde geändert, um die Berechnungszeit zu reduzieren. Jetzt werden solche großen Bignums mit dem Toom-3-Algorithmus multipliziert.
-
-
-
neue Kodierungen
-
CP950
-
CP951
-
UTF-16
-
UTF-32
-
-
Alias ändern
-
SJIS ist Windows-31J
-
-
-
-
neue Konstante
-
File::NULL Name des NULL-Geräts.
-
File::DIRECT Name von O_DIRECT.
-
-
-
-
verschieben von __id__ nach
BasicObject. -
erweiterte Methode
-
Kernel#randunterstützt Bereichsargumente
-
-
-
Module
-
neue Methoden
-
-
-
erweiterte Methode
-
Random.randunterstützt Bereichsargumente
-
-
-
-
erweiterte Methode
-
String#unpackunterstützt Endian-Modifikatoren
-
-
neue Methode
-
-
-
erweiterte Methode
-
Time#strftimeunterstützt %:z und %::z.
-
-
-
Process
-
Process#maxgroups und Process#maxgroups= lösen nun
NotImplementedErroraus, wenn die Plattform das Konzept der ergänzenden Gruppen nicht unterstützt.
-
-
bigdecimal
-
BigDecimal#power und BigDecimal#** unterstützen nicht-ganzzahlige Exponenten.
-
Kernel.BigDecimalundBigDecimal.newakzeptieren nun Instanzen vonInteger,Rational,FloatundBigDecimal. Wenn Sie ihnen eineRationaloder einFloatübergeben, müssen Sie die Präzision angeben, um die Ziffern einesBigDecimalzu erzeugen. -
Das Verhalten von BigDecimal#coerce mit einer
Rationalwurde geändert. Es verwendet die Präzision des EmpfängersBigDecimal, um die Ziffern einesBigDecimalaus der gegebenenRationalzu erzeugen.
-
-
bigdecimal/util
-
BigDecimal#to_d und Integer#to_d wurden hinzugefügt.
-
Float#to_d akzeptiert eine Präzision.
-
Rational#to_d löst
ArgumentErroraus, wenn Null oder eine negative Präzision übergeben wird. -
Rational#to_d
-
Null und eine implizite Präzision sind veraltet. Diese Funktion wird mit der nächsten Version von bigdecimal entfernt.
-
Eine negative Präzision wird nicht unterstützt. Seien Sie vorsichtig, dies ist eine inkompatible Änderung.
-
-
-
date
-
Akzeptiert Fließkommazahlen explizit mit Einschränkungen.
-
Wenn der angegebene Offset eine Fließkommazahl ist, nimmt
DateTimean, dass seine Präzision höchstens auf die Sekunde genau ist.DateTime.new(2001,2,3,0,0,0,3.0/24)==DateTime.new(2001,2,3,0,0,0,‘+03:00’)#=> true -
Wenn der angegebene Operand für -/+ eine Fließkommazahl ist, nimmt
DateTimean, dass seine Präzision höchstens auf die Nanosekunde genau ist.DateTime.new(2001,2,3)+ 0.5 ==DateTime.new(2001,2,3,12)#=> true -
Die Präzision des Offsets ist immer höchstens auf die Sekunde genau.
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
-
-
Ignoriert lange Offsets und ferne Reformtage (mit Warnung).
-
Akzeptiert jetzt nur noch
-1<=offset<=1 (-24:00..+24:00) 2298874<=start<=2426355 oder -/+oo
(proleptic Gregorian/Julian mean -/+oo)
-
-
Die Methode strftime kann keine riesige Ausgabe erzeugen (wie bei Time).
-
Auch wenn Date/DateTime ferne Daten verarbeiten können, verursacht das Folgende eine Ausnahme.
DateTime.new(1<<10000).strftime(‘%Y’) # Errno::ERANGE
-
-
Das Format von inspect wurde geändert.
-
Das Format von marshal wurde geändert (aber alte Dumps können geladen werden).
-
-
io/console
-
json
-
aktualisiert auf v1.5.4.
-
-
matrix
-
neue Klassen
-
Matrix::EigenvalueDecomposition
-
Matrix::LUPDecomposition
-
-
neue Methoden
-
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
-
-
erweiterte Methoden
-
Matrix#each und each_with_index können über eine Teilmenge der Elemente iterieren
-
Matrix#find_index gibt [Zeile, Spalte] zurück und kann über eine Teilmenge der Elemente iterieren
-
Matrix#** implementiert
Numeric-Exponenten (unter Verwendung des Eigensystems) -
Matrix.zero kann rechteckige Matrizen erstellen
-
-
-
minitest
-
Minitest wurde auf Version 2.2.2 aktualisiert.
-
Vollständige Details finden Sie unter github.com/seattlerb/minitest/blob/master/History.txt
-
-
net/http
-
SNI (Server Name Indication) für HTTPS unterstützt.
-
Ermöglicht die Konfiguration, um auf die Antwort ‚100 continue‘ des Servers zu warten, bevor der HTTP-Anfragekörper gesendet wird. Setzen Sie
Net::HTTP#continue_timeoutUND übergeben Sie ‚expect‘ => ‚100-continue‘ an einen zusätzlichen HTTP-Header.Zum Beispiel sendet der folgende Code den HTTP-Header und wartet auf die Antwort ‚100 continue‘, bevor der HTTP-Anfragekörper gesendet wird. Wenn ein Timeout von 0,5 [Sekunden] auftritt oder der Server ‚100 continue‘ sendet, sendet der Client den HTTP-Anfragekörper.
http.continue_timeout = 0.5 http.request_post('/continue', 'body=BODY', 'expect' => '100-continue')
-
neue Methode
-
Net::HTTPRequest#set_form): Hinzugefügt zur Unterstützung von application/x-www-form-urlencoded und multipart/form-data.
-
-
-
objspace
-
neue Methode
-
-
openssl
-
PKey::RSA und PKey::DSA verwenden nun das generische X.509-Kodierungsschema (z. B. verwendet in der Public Key Info eines X.509-Zertifikats), wenn öffentliche Schlüssel in DER- oder PEM-Form exportiert werden. Abwärtskompatibilität wird durch (bereits vorhandene) Fallbacks während der Erstellung gewährleistet.
-
OpenSSL::ASN1::Constructive#new und OpenSSL::ASN1::Primitive#new (und die Konstruktoren ihrer Unterklassen) erzwingen nicht mehr, dass das Tagging auf :EXPLICIT gesetzt wird, wenn Tag und/oder Tag-Klasse als Parameter übergeben werden. Das Tagging muss explizit gesetzt werden.
-
Unterstützung für Endloskodierungen über das Attribut infinite_length.
-
OpenSSL::PKey.read( file | string [, pwd] ) ermöglicht das Lesen beliebiger öffentlicher/privater Schlüssel in DER-/PEM-kodierter Form mit einem optionalen Passwort für verschlüsselte PEM-Kodierungen. -
Neue Methode
OpenSSL::X509::Name#hash_oldals Wrapper für X509_NAME_hash_old() hinzugefügt, die abOpenSSL1.0.0 definiert ist. Sie gibt einen mitOpenSSL0.9.8 kompatiblen Hash-Wert zurück.
-
-
optparse
-
Unterstützung für bash/zsh-Vervollständigung.
-
-
Rake
-
Rake wurde von 0.8.7 auf 0.9.2.2 aktualisiert. Vollständige Release Notes finden Sie unter github.com/jimweirich/rake/blob/master/CHANGES
-
-
RDoc
-
RDoc wurde auf Version 3.9.4 aktualisiert. Vollständige Release Notes finden Sie unter docs.seattlerb.org/rdoc/History_txt.html
-
-
rexml
-
Unterstützt den nativen Ruby-Encoding-Mechanismus und die iconv-Abhängigkeit wurde entfernt.
-
-
RubyGems
-
RubyGems wurde auf Version 1.8.10 aktualisiert. Vollständige Release Notes finden Sie unter rubygems.rubyforge.org/rubygems-update/History_txt.html
-
-
stringio
-
erweiterte Methode
-
StringIO#set_encodingkann ein zweites Argument und einen optionalen Hash erhalten.
-
-
-
test/unit
-
Neue Argumente
-
-j N, –jobs=N: Ermöglicht die gleichzeitige Ausführung von N Testfällen.
-
–jobs-status: Zeigt den Status von Jobs bei paralleler Ausführung an.
-
–no-retry: Testfälle, die bei paralleler Ausführung fehlgeschlagen sind, nicht wiederholen.
-
–ruby=RUBY: Pfad zu Ruby für den Job(Worker)-Prozess. Optional.
-
–hide-skip: Überspringen-Nachrichten ausblenden. Die Anzahl der übersprungenen Tests wird am Ende des Testergebnisses angezeigt.
-
-
-
uri
-
neue Methoden
-
-
webrick
-
neue Methode
-
WEBrick::HTTPRequest#continue zum Generieren der Antwort ‚100 continue‘.
-
-
neue Logging-Direktive
-
%{remote}p für den Port des Remote(Client)-Rechners.
-
-
-
yaml
-
zlib
-
neue Methoden
-
-
-
erweiterte Methode
-
FileUtils#chmodunterstützt symbolische Modusargumente.
-
-
Sprachänderungen
-
Reguläre Ausdrücke unterstützen nun Unicode 6.0. (neue Zeichen und Skripte)
- experimentell
-
Reguläre Ausdrücke unterstützen nun die Alters-Eigenschaft.
Im Gegensatz zu Perl nimmt die aktuelle Implementierung die Interpretation von UTS #18 vor. www.unicode.org/reports/tr18/
-
Ein- und Ausschalten von Einrückungswarnungen mit Direktiven. („# -*- warn-indent: true -*-“ / „# -*- warn-indent: false -*-“)
Kompatibilitätsprobleme (ausgenommen Feature-Fehlerbehebungen)
* Rational#to_d See above.