Skip to content

Commit 4f947a2

Browse files
nethadhsbt
authored andcommitted
Translate the Ruby 3.3 release announcement to German
1 parent d289f3d commit 4f947a2

File tree

1 file changed

+305
-0
lines changed

1 file changed

+305
-0
lines changed
Lines changed: 305 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,305 @@
1+
---
2+
layout: news_post
3+
title: "Ruby 3.3.0 veröffentlicht"
4+
author: "naruse"
5+
translator: Thomas Ritter
6+
date: 2023-12-25 00:00:00 +0000
7+
lang: de
8+
---
9+
10+
{% assign release = site.data.releases | where: "version", "3.3.0" | first %}
11+
Wir freuen uns, die Veröffentlichung von Ruby {{ release.version }} anzukündigen. Ruby 3.3 fügt einen neuen Parser namens Prism hinzu, verwendet Lrama als Parser-Generator, fügt einen neuen reinen Ruby JIT-Compiler namens RJIT hinzu und viele Leistungsverbesserungen, insbesondere YJIT.
12+
13+
## Prism
14+
15+
- Einführung des [Prism-Parser](https://github.com/ruby/prism) als Standard-Gem
16+
- Prism ist ein portabler, fehlertoleranter und wartbarer rekursiver Abstiegsparser für die Ruby-Sprache
17+
- Prism ist produktionsreif und wird aktiv gepflegt, Sie können es anstelle von Ripper verwenden
18+
- Es gibt [umfangreiche Dokumentation](https://ruby.github.io/prism/) zur Nutzung von Prism
19+
- Prism ist sowohl eine C-Bibliothek, die intern von CRuby verwendet wird, als auch ein Ruby-Gem, das von jedem Werkzeug verwendet werden kann, das Ruby-Code parsen muss
20+
- Nennenswerte Methoden in der Prism-API sind:
21+
- `Prism.parse(source)`, das den AST als Teil eines Parseergebnisobjekts zurückgibt
22+
- `Prism.parse_comments(source)`, das die Kommentare zurückgibt
23+
- `Prism.parse_success?(source)`, das true zurückgibt, wenn keine Fehler vorliegen
24+
- Sie können Pull-Requests oder Issues direkt im [Prism-Repository](https://github.com/ruby/prism) erstellen, wenn Sie an der Mitarbeit interessiert sind
25+
- Sie können jetzt `ruby --parser=prism` oder `RUBYOPT="--parser=prism"` verwenden, um mit dem Prism-Compiler zu experimentieren. Bitte beachten Sie, dass dieser Flag nur für das Debugging gedacht ist.
26+
27+
## Verwendung von Lrama anstelle von Bison
28+
29+
- Ersetzen von Bison durch [Lrama LALR-Parsergenerator](https://github.com/ruby/lrama) [[Feature #19637]](https://bugs.ruby-lang.org/issues/19637)
30+
- Wenn Sie interessiert sind, sehen Sie sich bitte [Die Zukunftsvision des Ruby-Parsers](https://rubykaigi.org/2023/presentations/spikeolaf.html) an
31+
- Der interne Lrama-Parser wird durch einen LR-Parser von Racc ersetzt, um die Wartbarkeit sicherzustellen
32+
- Parameterisierende Regeln `(?, *, +)` werden unterstützt, sie werden im Ruby parse.y verwendet
33+
34+
## YJIT
35+
36+
- Große Leistungsverbesserungen gegenüber Ruby 3.2
37+
- Die Unterstützung für Splat- und Rest-Argumente wurde verbessert.
38+
- Register werden für Stack-Operationen der virtuellen Maschine zugewiesen.
39+
- Mehr Aufrufe mit optionalen Argumenten werden kompiliert. Ausnahmebehandler werden ebenfalls kompiliert.
40+
- Nicht unterstützte Aufruftypen und megamorphe Aufrufstellen werden nicht mehr an den Interpreter übergeben.
41+
- Grundlegende Methoden wie Rails `#blank?` und
42+
[spezialisiertes `#present?`](https://github.com/rails/rails/pull/49909) werden eingebettet (inlined).
43+
- `Integer#*`, `Integer#!=`, `String#!=`, `String#getbyte`,
44+
`Kernel#block_given?`, `Kernel#is_a?`, `Kernel#instance_of?` und `Module#===`
45+
sind speziell optimiert.
46+
- Die Kompilierungsgeschwindigkeit ist jetzt etwas schneller als bei Ruby 3.2.
47+
- Jetzt mehr als 3x schneller als der Interpreter auf Optcarrot!
48+
- Deutlich verbesserte Speichernutzung gegenüber Ruby 3.2
49+
- Metadaten für kompilierten Code verwenden viel weniger Speicher.
50+
- `--yjit-call-threshold` wird automatisch von 30 auf 120 erhöht
51+
wenn die Anwendung mehr als 40.000 ISEQs hat.
52+
- `--yjit-cold-threshold` wird hinzugefügt, um das Kompilieren von kalten ISEQs zu überspringen.
53+
- Kompakterer Code wird auf Arm64 generiert.
54+
- Code GC ist jetzt standardmäßig deaktiviert
55+
- `--yjit-exec-mem-size` wird als hartes Limit behandelt, bei der die Kompilierung neuer Codes stoppt.
56+
- Keine plötzlichen Leistungseinbrüche aufgrund von Code GC.
57+
Besseres Copy-on-Write-Verhalten auf Servern mit Reforking mit
58+
[Pitchfork](https://github.com/shopify/pitchfork).
59+
- Sie können Code GC weiterhin mit `--yjit-code-gc` aktivieren, falls gewünscht
60+
- Hinzufügen von `RubyVM::YJIT.enable`, das YJIT zur Laufzeit aktivieren kann
61+
- Sie können YJIT starten, ohne Kommandozeilenargumente oder Umgebungsvariablen zu ändern.
62+
Rails 7.2 wird [YJIT standardmäßig aktivieren](https://github.com/rails/rails/pull/49947)
63+
mit dieser Methode.
64+
- Dies kann auch verwendet werden, um YJIT nur zu aktivieren, sobald Ihre Anwendung
65+
hochgefahren ist. `--yjit-disable` kann verwendet werden, wenn Sie andere
66+
YJIT-Optionen verwenden möchten, während YJIT beim Booten deaktiviert ist.
67+
- Mehr YJIT-Statistiken sind standardmäßig verfügbar
68+
- `yjit_alloc_size` und mehrere weitere metadatenbezogene Statistiken sind jetzt standardmäßig verfügbar.
69+
- Die von `--yjit-stats` produzierte `ratio_in_yjit`-Statistik ist jetzt in Release-Builds verfügbar,
70+
ein spezieller Statistik- oder Dev-Build ist nicht mehr erforderlich, um die meisten Statistiken abzurufen.
71+
- Hinzufügen weiterer Profiling-Fähigkeiten
72+
- `--yjit-perf` wird hinzugefügt, um das Profiling mit Linux perf zu erleichtern.
73+
- `--yjit-trace-exits` unterstützt jetzt das Sampling mit `--yjit-trace-exits-sample-rate=N`
74+
- Gründlicheres Testing und mehrere Bugfixes
75+
76+
## RJIT
77+
78+
- Einführung eines reinen Ruby JIT-Compilers RJIT und Ersatz von MJIT.
79+
- RJIT unterstützt nur die x86-64-Architektur auf Unix-Plattformen.
80+
- Im Gegensatz zu MJIT wird zur Laufzeit kein C-Compiler benötigt.
81+
- RJIT existiert nur zu experimentellen Zwecken.
82+
- Sie sollten in der Produktion weiterhin YJIT verwenden.
83+
- Wenn Sie an der Entwicklung von JIT für Ruby interessiert sind, schauen Sie sich bitte [k0kubuns Präsentation am Tag 3 von RubyKaigi](https://rubykaigi.org/2023/presentations/k0kubun.html#day3) an.
84+
85+
## M:N-Thread-Scheduler
86+
87+
- M:N-Thread-Scheduler wurde eingeführt. [[Feature #19842]](https://bugs.ruby-lang.org/issues/19842)
88+
- M Ruby-Threads werden von N nativen Threads (OS-Threads) verwaltet, sodass die Thread-Erstellungs- und Verwaltungskosten reduziert werden.
89+
- Es kann die Kompatibilität mit C-Erweiterungen brechen, sodass der M:N-Thread-Scheduler standardmäßig auf dem Haupt-Ractor deaktiviert ist.
90+
- Die Umgebungsvariable `RUBY_MN_THREADS=1` aktiviert M:N-Threads auf dem Haupt-Ractor.
91+
- M:N-Threads sind immer auf Nicht-Haupt-Ractors aktiviert.
92+
- Die Umgebungsvariable `RUBY_MAX_CPU=n` legt die maximale Anzahl von `N` (maximale Anzahl nativer Threads) fest. Der Standardwert ist 8.
93+
- Da nur ein Ruby-Thread pro Ractor gleichzeitig ausgeführt werden kann, wird die Anzahl der verwendeten nativen Threads verwendet, die kleiner ist als die in `RUBY_MAX_CPU` angegebene Anzahl und die Anzahl der laufenden Ractors. Einzelne Ractor-Anwendungen (die meisten Anwendungen) verwenden daher nur 1 nativen Thread.
94+
- Zur Unterstützung von blockierenden Operationen können mehr als `N` native Threads verwendet werden.
95+
96+
## Leistungsverbesserungen
97+
98+
- `defined?(@ivar)` ist mit Object Shapes optimiert.
99+
- Namensauflösungen wie `Socket.getaddrinfo` können jetzt unterbrochen werden (in Umgebungen, in denen pthreads verfügbar sind). [[Feature #19965]](https://bugs.ruby-lang.org/issues/19965)
100+
- Mehrere Leistungsverbesserungen beim Garbage Collector
101+
- Junge Objekte, die von alten Objekten referenziert werden, werden nicht mehr sofort
102+
in die alte Generation befördert. Dies reduziert die Häufigkeit von
103+
großen GC-Sammlungen erheblich. [[Feature #19678]](https://bugs.ruby-lang.org/issues/19678)
104+
- Eine neue Tuning-Variable `REMEMBERED_WB_UNPROTECTED_OBJECTS_LIMIT_RATIO` wurde
105+
eingeführt, um die Anzahl der ungeschützten Objekte zu steuern, die eine große GC-
106+
Sammlung auslösen. Der Standardwert ist auf `0.01` (1%) festgelegt. Dies reduziert die Häufigkeit von großen GC-Sammlungen erheblich. [[Feature #19571]](https://bugs.ruby-lang.org/issues/19571)
107+
- Write Barriers wurden für viele Kerntypen implementiert, die sie bisher vermisst haben,
108+
insbesondere `Time`, `Enumerator`, `MatchData`, `Method`, `File::Stat`, `BigDecimal`
109+
und mehrere andere. Dies reduziert die Zeit für kleine GC-Sammlungen und die Häufigkeit großer GC-Sammlungen erheblich.
110+
- Die meisten Kerntypen verwenden jetzt Variable Width Allocation, insbesondere `Hash`, `Time`,
111+
`Thread::Backtrace`, `Thread::Backtrace::Location`, `File::Stat`, `Method`.
112+
Dadurch sind diese Klassen schneller zugeteilt und freigegeben, verwenden weniger Speicher und reduzieren
113+
die Heapfragmentierung.
114+
- Unterstützung für schwache Referenzen wurde dem Garbage Collector hinzugefügt. [[Feature #19783]](https://bugs.ruby-lang.org/issues/19783)
115+
116+
## Weitere bemerkenswerte Änderungen seit 3.2
117+
118+
### IRB
119+
120+
IRB hat mehrere Verbesserungen erhalten, einschließlich, aber nicht beschränkt auf:
121+
122+
- Fortgeschrittene `irb:rdbg`-Integration, die ein äquivalentes Debugging-Erlebnis zu `pry-byebug` bietet ([Dokumentation](https://github.com/ruby/irb#debugging-with-irb)).
123+
- Pager-Unterstützung für die Befehle `ls`, `show_source` und `show_cmds`.
124+
- Genauere und hilfreichere Informationen, die von den Befehlen `ls` und `show_source` bereitgestellt werden.
125+
- Experimentelle Autovervollständigung mit Typenanalyse ([Dokumentation](https://github.com/ruby/irb#type-based-completion)).
126+
- Es ist jetzt möglich, die Schriftfarbe und den Schriftstil im Vervollständigungsdialog durch eine neu eingeführte Klasse Reline::Face zu ändern ([Dokumentation](https://github.com/ruby/ruby/blob/master/doc/reline/face.md))
127+
128+
Zusätzlich dazu hat IRB umfangreiche Refactorings durchlaufen und Dutzende von Bugfixes erhalten, um zukünftige Verbesserungen zu erleichtern.
129+
130+
Für detailliertere Updates lesen Sie bitte [Die große Weiterentwicklung von Ruby 3.3's IRB enthüllt](https://railsatscale.com/2023-12-19-irb-for-ruby-3-3/).
131+
132+
## Kompatibilitätsprobleme
133+
134+
Hinweis: Ausschließlich Bugfixes von Features.
135+
136+
- `it`-Aufrufe ohne Argumente in einem Block ohne gewöhnliche Parameter sind
137+
veraltet (deprecated). `it` wird in Ruby 3.4 eine Referenz auf den ersten Blockparameter sein.
138+
[[Feature #18980]](https://bugs.ruby-lang.org/issues/18980)
139+
140+
### Entfernte Umgebungsvariablen
141+
142+
Die folgenden veralteten Methoden werden entfernt.
143+
144+
- Umgebungsvariable `RUBY_GC_HEAP_INIT_SLOTS` wurde veraltet (deprecated) und ist eine No-Op. Bitte verwenden Sie stattdessen die Umgebungsvariablen `RUBY_GC_HEAP_{0,1,2,3,4}_INIT_SLOTS`. [[Feature #19785]](https://bugs.ruby-lang.org/issues/19785)
145+
146+
## Stdlib-Kompatibilitätsprobleme
147+
148+
### `ext/readline` wird eingestellt
149+
150+
- Wir haben `reline`, das eine reine Ruby-Implementierung kompatibel mit der `ext/readline` API ist. In Zukunft setzen wir auf `reline`. Wenn Sie `ext/readline` verwenden müssen, können Sie `ext/readline` über rubygems.org mit `gem install readline-ext` installieren.
151+
- Wir müssen keine Bibliotheken wie `libreadline` oder `libedit` mehr installieren.
152+
153+
## Aktualisierungen der Standardbibliothek
154+
155+
RubyGems und Bundler warnen, wenn Benutzer die folgenden Gems mit `require` laden ohne sie zum Gemfile oder gemspec hinzuzufügen. Dies liegt daran, dass sie in einer zukünftigen Version von Ruby zu mitinstallierten Gems werden.
156+
157+
Diese Warnung wird unterdrückt, wenn Sie das Bootsnap-Gem verwenden. Wir empfehlen, Ihre Anwendung mindestens einmal mit der Umgebungsvariable `DISABLE_BOOTSNAP=1` auszuführen. Dies ist eine Einschränkung dieser Version.
158+
159+
Zielbibliotheken sind:
160+
161+
- abbrev
162+
- base64
163+
- bigdecimal
164+
- csv
165+
- drb
166+
- getoptlong
167+
- mutex_m
168+
- nkf
169+
- observer
170+
- racc
171+
- resolv-replace
172+
- rinda
173+
- syslog
174+
175+
Das folgende Standard-Gem wird hinzugefügt.
176+
177+
- prism 0.19.0
178+
179+
Die folgenden Standard-Gems werden aktualisiert.
180+
181+
- RubyGems 3.5.3
182+
- abbrev 0.1.2
183+
- base64 0.2.0
184+
- benchmark 0.3.0
185+
- bigdecimal 3.1.5
186+
- bundler 2.5.3
187+
- cgi 0.4.1
188+
- csv 3.2.8
189+
- date 3.3.4
190+
- delegate 0.3.1
191+
- drb 2.2.0
192+
- english 0.8.0
193+
- erb 4.0.3
194+
- error_highlight 0.6.0
195+
- etc 1.4.3
196+
- fcntl 1.1.0
197+
- fiddle 1.1.2
198+
- fileutils 1.7.2
199+
- find 0.2.0
200+
- getoptlong 0.2.1
201+
- io-console 0.7.1
202+
- io-nonblock 0.3.0
203+
- io-wait 0.3.1
204+
- ipaddr 1.2.6
205+
- irb 1.11.0
206+
- json 2.7.1
207+
- logger 1.6.0
208+
- mutex_m 0.2.0
209+
- net-http 0.4.0
210+
- net-protocol 0.2.2
211+
- nkf 0.1.3
212+
- observer 0.1.2
213+
- open-uri 0.4.1
214+
- open3 0.2.1
215+
- openssl 3.2.0
216+
- optparse 0.4.0
217+
- ostruct 0.6.0
218+
- pathname 0.3.0
219+
- pp 0.5.0
220+
- prettyprint 0.2.0
221+
- pstore 0.1.3
222+
- psych 5.1.2
223+
- rdoc 6.6.2
224+
- readline 0.0.4
225+
- reline 0.4.1
226+
- resolv 0.3.0
227+
- rinda 0.2.0
228+
- securerandom 0.3.1
229+
- set 1.1.0
230+
- shellwords 0.2.0
231+
- singleton 0.2.0
232+
- stringio 3.1.0
233+
- strscan 3.0.7
234+
- syntax_suggest 2.0.0
235+
- syslog 0.1.2
236+
- tempfile 0.2.1
237+
- time 0.3.0
238+
- timeout 0.4.1
239+
- tmpdir 0.2.0
240+
- tsort 0.2.0
241+
- un 0.3.0
242+
- uri 0.13.0
243+
- weakref 0.1.3
244+
- win32ole 1.8.10
245+
- yaml 0.3.0
246+
- zlib 3.1.0
247+
248+
Das folgende mitinstallierten Gem wird von Standard-Gems gefördert.
249+
250+
- racc 1.7.3
251+
252+
Die folgenden mitinstallierten Gems werden aktualisiert.
253+
254+
- minitest 5.20.0
255+
- rake 13.1.0
256+
- test-unit 3.6.1
257+
- rexml 3.2.6
258+
- rss 0.3.0
259+
- net-ftp 0.3.3
260+
- net-imap 0.4.9
261+
- net-smtp 0.4.0
262+
- rbs 3.4.0
263+
- typeprof 0.21.9
264+
- debug 1.9.1
265+
266+
Weitere Informationen finden Sie in den GitHub-Releases wie [Logger](https://github.com/ruby/logger/releases) oder
267+
Änderungsprotokoll für Details zu den Standard-Gems oder mitinstallierten Gems.
268+
269+
Siehe [NEWS](https://github.com/ruby/ruby/blob/{{ release.tag }}/NEWS.md)
270+
oder [Commit-Protokolle](https://github.com/ruby/ruby/compare/v3_2_0...{{ release.tag }})
271+
für weitere Details.
272+
273+
Mit diesen Änderungen haben sich [{{ release.stats.files_changed }} Dateien geändert, {{ release.stats.insertions }} Einfügungen(+), {{ release.stats.deletions }} Löschungen(-)](https://github.com/ruby/ruby/compare/v3_2_0...{{ release.tag }}#file_bucket)
274+
seit Ruby 3.2.0!
275+
276+
Frohe Weihnachten, schöne Feiertage und viel Spaß beim Programmieren mit Ruby 3.3!
277+
278+
## Download
279+
280+
- <{{ release.url.gz }}>
281+
282+
GRÖSSE: {{ release.size.gz }}
283+
SHA1: {{ release.sha1.gz }}
284+
SHA256: {{ release.sha256.gz }}
285+
SHA512: {{ release.sha512.gz }}
286+
287+
- <{{ release.url.xz }}>
288+
289+
GRÖSSE: {{ release.size.xz }}
290+
SHA1: {{ release.sha1.xz }}
291+
SHA256: {{ release.sha256.xz }}
292+
SHA512: {{ release.sha512.xz }}
293+
294+
- <{{ release.url.zip }}>
295+
296+
GRÖSSE: {{ release.size.zip }}
297+
SHA1: {{ release.sha1.zip }}
298+
SHA256: {{ release.sha256.zip }}
299+
SHA512: {{ release.sha512.zip }}
300+
301+
## Was ist Ruby
302+
303+
Ruby wurde erstmals 1993 von Matz (Yukihiro Matsumoto) entwickelt
304+
und wird jetzt als Open Source entwickelt. Es läuft auf mehreren Plattformen
305+
und wird weltweit vor allem für die Webentwicklung verwendet.

0 commit comments

Comments
 (0)