|
| 1 | +--- |
| 2 | +layout: news_post |
| 3 | +title: "Ruby 2.7.0-preview1 veröffentlicht" |
| 4 | +author: "naruse" |
| 5 | +translator: "Marvin Gülker" |
| 6 | +date: 2019-05-30 00:00:00 +0000 |
| 7 | +lang: de |
| 8 | +--- |
| 9 | + |
| 10 | +Wir freuen uns, die Veröffentlichung von Ruby 2.7.0-preview1 |
| 11 | +bekanntgeben zu können. |
| 12 | + |
| 13 | +Diese Vorschau wird veröffentlicht, um bis zur geplanten finalen |
| 14 | +Freigabe im Dezember Erfahrungsberichte sammeln zu können. Sie enthält |
| 15 | +eine Anzahl neuer Funktionalitäten und Performanzverbesserungen, |
| 16 | +namentlich: |
| 17 | + |
| 18 | +* Defragmentierung für den GC _(Campaction GC)_ |
| 19 | +* Musterabgleiche |
| 20 | +* Verbesserungen der interaktiven Kommandozeile _(REPL)_ |
| 21 | + |
| 22 | +## Defragmentierender GC |
| 23 | + |
| 24 | +Die neue Version wird einen defragmentierenden GC _(Compaction GC)_ |
| 25 | +einführen, der fragmentierten Arbeitsspeicherplatz defragmentieren |
| 26 | +kann. |
| 27 | + |
| 28 | +Einige Ruby-Programme, die mit mehreren Threads arbeiten, leiden |
| 29 | +derzeit unter Speicherfragmentierung. Dies verursacht einen hohen |
| 30 | +Speicherverbrauch und eine reduzierte Ausführungsgeschwindigkeit. |
| 31 | + |
| 32 | +Zur Behebung des Problems wird die neue Methode `GC.compact` |
| 33 | +eingeführt. Sie defragmentiert den Freispeicher _(Heap)_, indem sie |
| 34 | +noch aktive Objekte näher zusammenrückt, sodass weniger Speicherseiten |
| 35 | +benötigt werden und der Freispeicher insgesamt besser für |
| 36 | +Copy-on-Write geeignet ist. [#15626](https://bugs.ruby-lang.org/issues/15626) |
| 37 | + |
| 38 | +## Musterabgleiche [Experimentell] |
| 39 | + |
| 40 | +Musterabgleiche sind eine häufig genutzte Funktion funktionaler |
| 41 | +Programmiersprachen. Mit 2.7.0 werden sie als experimentell in die |
| 42 | +Programmiersprache Ruby eingeführt. [#14912](https://bugs.ruby-lang.org/issues/14912) |
| 43 | +Ein Musterabgleich untersucht das übergebene Objekt und weist seinen |
| 44 | +Wert dann zu, wenn er auf ein bestimmtes Muster passt. |
| 45 | + |
| 46 | +```ruby |
| 47 | +case JSON.parse('{...}', symbolize_names: true) |
| 48 | +in {name: "Alice", children: [{name: "Bob", age: age}]} |
| 49 | + p age |
| 50 | + ... |
| 51 | +end |
| 52 | +``` |
| 53 | + |
| 54 | +Weitere Details können Sie der Präsentation [Musterabgleiche - Neue Funktion in Ruby 2.7](https://speakerdeck.com/k_tsj/pattern-matching-new-feature-in-ruby-2-dot-7) |
| 55 | +entnehmen. |
| 56 | + |
| 57 | +## Verbesserung der interaktiven Kommandozeile |
| 58 | + |
| 59 | +Die mitgelieferte interaktive Kommandozeile `irb` _(REPL: Read-Eval-Print-Loop)_ |
| 60 | +wird mehrzeiliges Editieren unterstützen. Dies wird mithilfe von |
| 61 | +`reline`, einer `readline`-kompatiblen reinen Ruby-Bibliothek, |
| 62 | +umgesetzt. Darüber hinaus wird `irb` besser mit RDoc integriert: es |
| 63 | +wird möglich, die Referenzdokumentation für eine bestimmte Klasse, |
| 64 | +ein bestimmtes Modul oder auch eine bestimmte Methode nachzuschlagen. |
| 65 | +[#14683](https://bugs.ruby-lang.org/issues/14683), |
| 66 | +[#14787](https://bugs.ruby-lang.org/issues/14787), |
| 67 | +[#14918](https://bugs.ruby-lang.org/issues/14918) |
| 68 | +Schließlich werden von `binding.irb` angezeigte Quellcode-Zeilen und |
| 69 | +Ergebnisse von `inspect` farblich hevorgehoben werden. |
| 70 | + |
| 71 | +<video autoplay="autoplay" controls="controls" muted="muted" width="576" height="259"> |
| 72 | + <source src="https://cache.ruby-lang.org/pub/media/irb_improved_with_key_take2.mp4" type="video/mp4"> |
| 73 | +</video> |
| 74 | + |
| 75 | +## Sonstige bemerkenswerte neue Funktionen |
| 76 | + |
| 77 | +* Ein Methoden-Referenz-Operator, <code>.:</code>, wird als |
| 78 | + experimentell eingeführt. [#12125](https://bugs.ruby-lang.org/issues/12125), [#13581](https://bugs.ruby-lang.org/issues/13581) |
| 79 | + |
| 80 | +* Blockparameter werden für abgekürzten Zugriff automatisch nummeriert (experimentell). |
| 81 | + [#4475](https://bugs.ruby-lang.org/issues/4475) |
| 82 | + |
| 83 | +* Ruby verfügt bereits über endlose Range-Objekte. Nunmehr werden auch |
| 84 | + anfangslose Range-Objekte eingeführt. Diese sind vielleicht nicht so |
| 85 | + nützlich wie endlose Range-Objekte, könnten aber für |
| 86 | + domänenspezifische Sprachen praktisch sein. |
| 87 | + [#14799](https://bugs.ruby-lang.org/issues/14799) |
| 88 | + |
| 89 | + ary[..3] # identical to ary[0..3] |
| 90 | + rel.where(sales: ..100) |
| 91 | + |
| 92 | +* `Enumerable#tally` wird hinzugefügt. Die Methode zählt das Vorkommen |
| 93 | + jedes Elements. |
| 94 | + |
| 95 | + ["a", "b", "c", "b"].tally |
| 96 | + #=> {"a"=>1, "b"=>2, "c"=>1} |
| 97 | + |
| 98 | +## Performanzverbesserungen |
| 99 | + |
| 100 | +* JIT [Experimentell] |
| 101 | + |
| 102 | + * JIT-kompilierter Code wird neu zu weniger optimiertem Code |
| 103 | + kompiliert, wenn eine Optimierungsannahme sich als falsch |
| 104 | + herausstellt. |
| 105 | + |
| 106 | + * Method-Inlining wird durchgeführt, wenn eine Methode als rein |
| 107 | + _(pure)_ gilt. Diese Optimierung ist noch experimentell und |
| 108 | + zahlreiche Methoden gelten noch nicht als rein. |
| 109 | + |
| 110 | + * Der Standardwert von `--jit-min-calls` wird von 5 auf 10.000 |
| 111 | + geändert. |
| 112 | + |
| 113 | + * Der Standardwert von `--jit-max-cache` wird von 1.000 auf 100 |
| 114 | + geändert. |
| 115 | + |
| 116 | +## Sonstige bemerkenswerte Änderungen seit 2.6 |
| 117 | + |
| 118 | +* Die Nutzung von `Proc.new` und `proc` ohne Block in einer Methode, |
| 119 | + die einen Block erwartet, führt nun zu einer Warnung. |
| 120 | + |
| 121 | +* Die Nutzung von `lambda` ohne block in einer Methode, die einen |
| 122 | + Block erwartet, erzeugt einen Fehler. |
| 123 | + |
| 124 | +* Die Unicode- und Emoji-Version werden von 11.0.0 auf 12.0.0 angehoben. |
| 125 | + [[Feature #15321]](https://bugs.ruby-lang.org/issues/15321) |
| 126 | + |
| 127 | +* Die Unicode-Version wird auf 12.1.0 angehoben, um Unterstützung für |
| 128 | + U+32FF SQUARE ERA NAME REIWA zu erhalten. [[Feature #15195]](https://bugs.ruby-lang.org/issues/15195) |
| 129 | + |
| 130 | +* `Date.jisx0301`, `Date#jisx0301` und `Date.parse` implementieren |
| 131 | + provisorische Unterstützung für die neue japanische Ära. Dies ist |
| 132 | + keine offiziell unterstützte Änderung, sondern provisorisch bis zur |
| 133 | + Freigabe von JIS X 0301. |
| 134 | + [[Feature #15742]](https://bugs.ruby-lang.org/issues/15742) |
| 135 | + |
| 136 | +* Ruby nutzt jetzt C99, welches der Compiler unterstützen muss. |
| 137 | + [[Misc #15347]](https://bugs.ruby-lang.org/issues/15347) |
| 138 | + * Details zum genutzten Dialekt: <https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/C99> |
| 139 | + |
| 140 | + |
| 141 | +Siehe die |
| 142 | +[NEWS](https://github.com/ruby/ruby/blob/v2_7_0_preview1/NEWS) oder |
| 143 | +die |
| 144 | +[Commit-Logs](https://github.com/ruby/ruby/compare/v2_6_0...v2_7_0_preview1) |
| 145 | +für weitere Details. |
| 146 | + |
| 147 | +Mit diesen Änderungen wurden [1727 Dateien geändert, 76022 Einfügungen(+), 60286 Löschungen(-)](https://github.com/ruby/ruby/compare/v2_6_0...v2_7_0_preview1) seit Ruby 2.6.0! |
| 148 | + |
| 149 | +Viel Spaß bei der Programmierung mit Ruby 2.7! |
| 150 | + |
| 151 | +## Download |
| 152 | + |
| 153 | +* <https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0-preview1.tar.gz> |
| 154 | + |
| 155 | + SIZE: 16021286 bytes |
| 156 | + SHA1: 2fbecf42b03a9d4391b81de42caec7fa497747cf |
| 157 | + SHA256: c44500af4a4a0c78a0b4d891272523f28e21176cf9bc1cc108977c5f270eaec2 |
| 158 | + SHA512: f731bc9002edd3a61a4955e4cc46a75b5ab687a19c7964f02d3b5b07423d2360d25d7be5df340e884ca9945e3954e68e5eb11b209b65b3a687c71a1abc24b91f |
| 159 | +* <https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0-preview1.zip> |
| 160 | + |
| 161 | + SIZE: 20283343 bytes |
| 162 | + SHA1: 7488346fa8e58203a38158752d03c8be6b1da65b |
| 163 | + SHA256: fdf25573e72e1769b51b8d541d0e1a894a5394dbfdf1b08215aa093079cca64c |
| 164 | + SHA512: b3b1f59dce94c242ef88a4e68381a4c3a6f90ba0af699083e5a1a00b0fb1dce580f057dad25571fe789ac9aa95aa6e9c071ebb330328dc822217ac9ea9fbeb3f |
| 165 | +* <https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0-preview1.tar.bz2> |
| 166 | + |
| 167 | + SIZE: 14038296 bytes |
| 168 | + SHA1: f7e70cbc2604c53a9e818a2fc59cd0e2d6c859fa |
| 169 | + SHA256: d45b4a1712ec5c03a35e85e33bcb57c7426b856d35e4f04f7975ae3944d09952 |
| 170 | + SHA512: a36b241fc1eccba121bb7c2cc5675b11609e0153e25a3a8961b67270c05414b1aa669ce5d4a5ebe4c6b2328ea2b8f8635fbba046b70de103320b3fdcb3d51248 |
| 171 | +* <https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0-preview1.tar.xz> |
| 172 | + |
| 173 | + SIZE: 11442988 bytes |
| 174 | + SHA1: 45e467debc194847a9e3afefb20b11e6dc28ea31 |
| 175 | + SHA256: 8c546df3345398b3edc9d0ab097846f033783d33762889fd0f3dc8bb465c3354 |
| 176 | + SHA512: d416e90bfa3e49cc0675c4c13243c8ec319b7a0836add1bd16bd7662d09eaf46656d26e772ef3b097e10779896e643edd8a6e4f885147e3235257736adfdf3b5 |
| 177 | + |
| 178 | +## Was ist Ruby |
| 179 | + |
| 180 | +Die Programmiersprache Ruby wurde 1993 von Yukihiro „Matz“ Matsumoto |
| 181 | +erfunden und wird heute als quelloffene Software entwickelt. Sie läuft |
| 182 | +auf verschiedenen Plattformen und wird überall auf der Welt namentlich |
| 183 | +für die Webentwicklung genutzt. |
0 commit comments