NEWS für Ruby 2.2.0
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 2.1.0
Sprachänderungen
-
nil/true/false
-
nil/true/false Objekte sind eingefroren. [Feature #8923]
-
-
HashLiteral-
Ein
Symbol-Schlüssel gefolgt von einem Doppelpunkt kann in Anführungszeichen gesetzt werden. [Feature #4276]
-
-
Ein Standardargument behob einen sehr langjährigen Fehler, dass ein optionales Argument in seinem Standardwertausdruck nicht zugänglich war. [Bug #9593]
Aktualisierungen von Core-Klassen (nur die wichtigsten)
-
-
Neue Methoden
-
-
-
Neue Methoden
-
-
-
Neue Methoden
-
Erweiterte Methoden
-
min, min_by, max und max_by unterstützen optionale Argumente, um mehrere Elemente zurückzugeben.
-
-
-
-
Neue Methoden
-
-
-
Neue Methoden
-
-
-
Neue Methoden
-
-
-
GC.latest_gc_infogibt :state zurück, um den aktuellenGC-Status darzustellen. -
Verbesserungen
-
Einführung der inkrementellen Markierung für den großen
GC. [Feature #10137]
-
-
-
-
Verbesserungen
-
IO#read_nonblockundIO#write_nonblockfür Pipes unter Windows werden unterstützt. [Feature #10171]
-
-
-
-
Neue Methoden
-
Kernel#itself
-
-
Verbesserungen
-
Kernel#throwlöstUncaughtThrowError, eine Unterklasse vonArgumentError, aus, wenn kein entsprechender catch-Block vorhanden ist, anstattArgumentError.
-
-
-
Process
-
Erweiterte Methode
-
Prozess-Ausführungsmethoden wie
Process.spawnöffnen die Datei im Schreibmodus für die Umleitung von [:out, :err].
-
-
-
-
Verbesserungen
-
Die meisten Symbole, die von
String#to_symundString#internzurückgegeben werden, sind GC-fähig.
-
-
-
Method
-
Neue Methoden
-
Method#curry([ arity ]) gibt einen curriedProczurück. -
Method#super_methodgibt eine Methode der Oberklasse zurück, die aufgerufen würde, wenn super verwendet wird.
-
-
Kompatibilitätsprobleme bei Kernklassen (ausschließlich Korrekturen von Feature-Bugs)
-
-
Enumerable#slice_before's Zustandsverwaltung ist veraltet. [Feature #10317] -
Enumerable#chunk's Zustandsverwaltung ist veraltet. [Feature #10317]
-
-
-
Inkompatible Änderungen
-
Umbenennung von
GC.stat-Einträgen. [Feature #9924] Siehe docs.google.com/spreadsheets/d/11Ua4uBr6o0k-nORrZLEIIUkHJ9JRzRR0NyZfrhEEnc8/edit?usp=sharing
-
-
-
-
Inkompatible Änderungen
-
Änderung der Überschreibungsrichtlinie für doppelte Schlüssel. [Bug #10315] { **hash1, **hash2 } enthält Werte von hash2 für doppelte Schlüssel.
-
-
-
-
Inkompatible Änderungen
-
Beim Leeren eines
IO-Streams mitIO#flushkönnen Sie nicht davon ausgehen, dass die Metadaten der Datei sofort aktualisiert werden. Auf einigen Plattformen (insbesondere Windows) verzögert sich dies, bis die Auslastung des Dateisystems nachlässt. Verwenden SieIO#fsync, wenn Sie die Aktualisierung der Metadaten garantieren möchten.
-
-
-
-
Inkompatible Änderungen
-
Math.loglöst nunMath::DomainErroraus, anstatt NaN zurückzugeben, wenn die Basis kleiner als 0 ist, und gibt NaN anstelle von -infinity zurück, wenn beide Argumente 0 sind. -
Math.atan2gibt nun Werte wie von C99 erwartet zurück, wenn beide Argumente unendlich sind.
-
-
-
-
Inkompatible Änderungen
-
ArgumentErrorwird nicht mehr ausgelöst, wenn ein Lambda-Procals Block übergeben wird und die Anzahl der übergebenen Argumente nicht mit den formalen Argumenten des Lambda übereinstimmt, wenn nur ein Array übergeben wird und dessen Länge übereinstimmt.
-
-
-
Process
-
Prozess-Ausführungsmethoden wie
Process.spawnöffnen die Datei im Schreibmodus für die Umleitung von [:out, :err]. Vor Ruby 2.2 wurde sie im Lesemodus geöffnet.
-
Aktualisierungen von Stdlib (nur die wichtigsten)
-
-
callcc ist veraltet. Verwenden Sie stattdessen
Fiber.
-
-
-
Digest() sollte jetzt Thread-sicher sein. Wenn Sie Probleme mit der bedarfsgesteuerten Ladung in einer Multithreading-Umgebung haben, laden Sie "digest/*"-Module beim Start vor oder verwenden Sie diese Methode anstelle der direkten Referenzierung von Digest::*.
-
Digest::HMAC wurde wie zuvor angekündigt entfernt.
-
-
DL
-
DL wurde aus der Standardbibliothek entfernt. Bitte verwenden Sie stattdessen Fiddle!
-
-
-
Neue Methoden
-
-
-
Erweiterte Methoden
-
Die find-Methode akzeptiert das Schlüsselwortargument "ignore_error".
-
-
-
Matrix
-
Neue Methoden
-
Matrix#first_minor(row, column) gibt die Untermatrix zurück, die durch Löschen der angegebenen Zeile und Spalte erhalten wird.
-
Matrix#cofactor(row, column) gibt den (row, column)-Kofaktor zurück, der durch Multiplikation des ersten Minors mit (-1)**(row + column) erhalten wird.
-
Matrix#adjugate gibt die Adjunkte der Matrix zurück.
-
hstack und vstack sind neue Instanz- und Klassenmethoden zum horizontalen und vertikalen Stapeln von Matrizen.
-
Matrix#laplace_expansion(row_or_column: num) gibt die Laplace-Expansion entlang der
num-ten Zeile oder Spalte zurück. -
Vector.basis(size:, index:) gibt den angegebenen Basisvektor zurück.
-
Unäre - und + für Vektor und Matrix hinzugefügt.
-
Vector#cross_product wurde auf beliebige Dimensionen verallgemeinert.
-
Vector#dot und cross sind Aliase für inner_product und cross_product.
-
Vector#angle_with gibt den Winkel mit seinem Argument zurück.
-
Neue Instanz- und Klassenmethode independent? zum Testen der linearen Unabhängigkeit.
-
-
-
-
Pathname#/ist mitPathname#+aliased. -
Neue Methoden
-
-
Rake
-
Aktualisiert auf Rake 10.4.0. Vollständige Release Notes siehe
-
-
RubyGems
-
Aktualisiert auf RubyGems 2.4.2. Vollständige Release Notes siehe
docs.seattlerb.org/rubygems/History_txt.html#label-2.4.2+%2F+2014-10-01
-
-
-
TSort.tsort_each,TSort.each_strongly_connected_componentundTSort.each_strongly_connected_component_fromgeben einen Enumerator zurück, wenn kein Block angegeben ist.
-
-
XMLRPC
-
Neue Parserklasse namens LibXMLStreamParser hinzugefügt.
-
Kompatibilitätsprobleme mit Stdlib (ausgenommen Fehlerbehebungen von Features)
-
lib/mathn.rb
-
Warnung vor veralteten APIs angezeigt [Feature #10169]
-
-
ext/date/lib/date/format.rb
-
Entfernt, da es eine leere Datei ist.
-
-
-
Digest::HMAC existiert endgültig nicht mehr. Verwenden Sie stattdessen
OpenSSL::HMACoder ein externes Gem.
-
-
-
Time.parse,Time.strptime,Time.rfc2822,Time.xmlschemakönnen festeTime-Objekte erzeugen. Dies geschieht, wenn die normale Ortszeit den Offset von UTC nicht beibehält. -
Time.httpdateerzeugt immer ein UTCTime-Objekt. -
Time.strptimelöstArgumentErroraus, wenn keine Datumsinformationen vorhanden sind.
-
-
lib/rational.rb
-
Entfernt, da es seit 2009 veraltet ist.
-
-
lib/complex.rb
-
Entfernt, da es seit 2009 veraltet ist.
-
-
-
PrettyPrint#first? entfernt.
-
-
lib/minitest/*.rb
-
Entfernt, da es mit minitest 5 in Konflikt steht. [Feature #9711]
-
-
lib/test/**.rb
-
Entfernt, da es mit minitest 5 in Konflikt steht und nur ein Wrapper für minitest 4 war. [Feature #9711]
-
-
lib/uri
-
Unterstützt RFC 3986. [Feature #2542]
-
-
GServer
-
GServer wurde in das Gem gserver extrahiert. Es handelt sich um unpflegbaren Code.
-
-
Logger
-
Logger::Application wurde in das Gem logger-application extrahiert. Es handelt sich um unpflegbaren Code.
-
-
ObjectSpace(nach dem Laden von "objspace")-
ObjectSpace.memsize_of(obj)gibt eine Größe zurück, die sizeof(RVALUE) beinhaltet. [Bug #8984]
-
-
Prime
-
Inkompatible Änderungen
-
Prime.prime? gibt jetzt für negative Zahlen false zurück. Diese Methode sollte nicht verwendet werden, um festzustellen, ob eine Zahl zusammengesetzt ist oder nicht. [Bug #7395]
-
-
-
-
Psych::EngineManager entfernt [Bug #8344]
-
Kompatibilitätsprobleme bei integrierten globalen Variablen
Updates der C-API
-
Veraltete APIs entfernt. [Feature #9502]
Check_SafeStr -> SafeStringValue rb_check_safe_str -> SafeStringValue rb_quad_pack -> rb_integer_pack rb_quad_unpack -> rb_integer_unpack rb_read_check : greift auf die interne struct FILE zu. Keine Ersetzung. rb_struct_iv_get : interne Funktion. Keine Ersetzung. struct rb_blocking_region_buffer : interner Typ. Keine Ersetzung. rb_thread_blocking_region_begin -> Familie rb_thread_call_without_gvl rb_thread_blocking_region_end -> Familie rb_thread_call_without_gvl TRAP_BEG -> Familie rb_thread_call_without_gvl TRAP_END -> Familie rb_thread_call_without_gvl rb_thread_select -> rb_thread_fd_select struct rb_exec_arg : interner Typ. Keine Ersetzung. rb_exec : interne Funktion. Keine Ersetzung. rb_exec_arg_addopt : interne Funktion. Keine Ersetzung. rb_exec_arg_fixup : interne Funktion. Keine Ersetzung. rb_exec_arg_init : interne Funktion. Keine Ersetzung. rb_exec_err : interne Funktion. Keine Ersetzung. rb_fork : interne Funktion. Keine Ersetzung. rb_fork_err : interne Funktion. Keine Ersetzung. rb_proc_exec_n : interne Funktion. Keine Ersetzung. rb_run_exec_options : interne Funktion. Keine Ersetzung. rb_run_exec_options_err : interne Funktion. Keine Ersetzung. rb_thread_blocking_region -> Familie rb_thread_call_without_gvl rb_thread_polling -> rb_thread_wait_for rb_big2str0 : interne Funktion. Keine Ersetzung. rb_big2ulong_pack -> rb_integer_pack rb_gc_set_params : interne Funktion. Keine Ersetzung. rb_io_mode_flags -> rb_io_modestr_fmode rb_io_oflags_fmode
-
struct RBignum ist versteckt. [Feature #6083] Verwenden Sie stattdessen rb_integer_pack und rb_integer_unpack.
-
struct RRational ist versteckt. [Feature #9513] Verwenden Sie stattdessen rb_rational_num und rb_rational_den.
-
rb_big_new und rb_big_resize nehmen eine size_t anstelle von long.
-
rb_num2long gibt ein long anstelle von SIGNED_VALUE zurück.
-
rb_num2ulong gibt ein unsigned long anstelle von VALUE zurück.
-
st Hash-Tabellen verwenden Potenzen von zwei für die Größe zur Leistungssteigerung [Feature #9425]. Lookups sind 10-25 % schneller, wenn geeignete Hash-Funktionen verwendet werden. Schwächen in der Hash-Verteilung können jedoch nicht mehr durch primzahlgroße Tabellen maskiert werden, sodass Erweiterungen möglicherweise Hash-Funktionen anpassen müssen, um eine gute Verteilung zu gewährleisten.
-
rb_sym2str() hinzugefügt. Dies ist fast dasselbe wie `rb_id2str(SYM2ID(sym))`, aber es fixiert kein dynamisches Symbol.
-
rb_str_cat_cstr() hinzugefügt. Dies ist dasselbe wie `rb_str_cat2()`.
-
`rb_str_substr()` und `rb_str_subseq()` werden in Zukunft die Mitte eines Strings teilen, nicht nur das Ende. Daher sind Ergebnis-Strings möglicherweise nicht NUL-terminiert. `StringValueCStr()` muss aufgerufen werden, um einen NUL-terminierten C-String zu erhalten.
-
rb_tracepoint_new() unterstützt neue interne Ereignisse, die nur aus C zugänglich sind.
-
RUBY_INTERNAL_EVENT_GC_ENTER
-
RUBY_INTERNAL_EVENT_GC_EXIT r47528
-
-
rb_hash_delete() ruft den an die aktuelle Methode übergebenen Block nicht mehr auf.
-
rb_extract_keywords() und rb_get_kwargs() exportiert. Weitere Details siehe README.EXT.
Aktualisierungen des Build-Systems
-
jemalloc wird optional unterstützt über `./configure --with-jemalloc`. jemalloc kann geeignet sein, wenn der System-malloc langsam ist oder zu Fragmentierung neigt. [Feature #9113]
Implementierungsänderungen
-
* Most symbols which are returned by String#to_sym and String#intern are GC-able [Feature #9634] * Introduce incremental marking for major GC. [Feature #10137] * Enable lazy sweep on GC caused by malloc().
-
VM
* Use frozen string literals for Hash#[] and Hash#[]= * Fast keyword arguments passing [Feature #10440] * Allow to receive huge splatted array by a rest argument [Feature #10440]
-
Process
* Process creation methods, such as spawn(), uses vfork() system call. vfork() is faster than fork() when the parent process uses huge memory.