Skip to content

Commit 96eca3b

Browse files
committed
Translate Ruby 3.1.0 Preview 1 released news (id)
1 parent f44f9d8 commit 96eca3b

File tree

1 file changed

+248
-0
lines changed

1 file changed

+248
-0
lines changed
Lines changed: 248 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,248 @@
1+
---
2+
layout: news_post
3+
title: "Ruby 3.1.0 Preview 1 Dirilis"
4+
author: "naruse"
5+
translator: "meisyal"
6+
date: 2021-11-09 00:00:00 +0000
7+
lang: id
8+
---
9+
10+
{% assign release = site.data.releases | where: "version", "3.1.0-preview1" | first %}
11+
12+
Kami dengan senang hati mengumumkan rilis dari Ruby {{ release.version }}.
13+
14+
## YJIT: Compiler JIT eksperimental baru
15+
16+
17+
Ruby 3.1 menggabungkan YJIT, sebuah *compiler* JIT baru yang dikembangkan oleh
18+
Shopify.
19+
20+
Sejak [Ruby 2.6 mengenalkan MJIT pada 2018](https://www.ruby-lang.org/id/news/2018/12/25/ruby-2-6-0-released/),
21+
kinerjanya sangat meningkat dan akhirnya
22+
[kami mecapai Ruby3x3 tahun lalu](https://www.ruby-lang.org/id/news/2020/12/25/ruby-3-0-0-released/).
23+
Meskipun *Optcarrot* telah menunjukkan peningkatan luar biasa, JIT belum
24+
memberikan manfaat untuk aplikasi dunia nyata.
25+
26+
Baru-baru ini Shopify berkontribusi banyak memperbaiki Ruby dengan meningkatkan
27+
kinerja aplikasi *Rails* mereka. YJIT adalah sebuah kontribusi penting dan
28+
bertujuan untuk memperbaiki kinerja dari aplikasi *Rails*.
29+
30+
Walaupun MJIT adalah sebuah *method-based compiler* JIT dan menggunakan sebuah
31+
*compiler* C eksternal, YJIT menggunakan *Basic Block Versioning* dan
32+
memasukkan *compiler* JIT ke dalamnya. Dengan *Lazy Basic Block Versioning*
33+
(LBBV), pertama ini akan meng-*compile* awal dari sebuah *method* dan secara
34+
bertahap meng-*compile* sisanya ketika *argument types* dan variabel ditentukan
35+
secara dinamis. Lihat
36+
[YJIT: a basic block versioning JIT compiler for CRuby](https://dl.acm.org/doi/10.1145/3486606.3486781)
37+
untuk pengenalan.
38+
39+
Dengan teknologi ini, YJIT meraih waktu *warmup* cepat dan peningkatan kinerja
40+
pada kebanyakan aplikasi dunia nyata hingga 22% pada railsbench dan 39% pada
41+
liquid-render.
42+
43+
<!-- 試す人向けのお知らせ -->
44+
45+
YJIT merupakan sebuah fitur yang masih eksperimental dan dinonaktifkan secara
46+
*default*. Jika Anda ingin menggunakannya, tetapkan `--yjit` pada opsi
47+
*command-line*. Fitur ini terbatas pada macOS & Linux dengan arsitektur x86-64
48+
saat ini.
49+
50+
* <https://bugs.ruby-lang.org/issues/18229>
51+
* <https://shopify.engineering/yjit-just-in-time-compiler-cruby>
52+
* <https://www.youtube.com/watch?v=PBVLf3yfMs8>
53+
54+
## debug gem: Sebuah debugger baru
55+
56+
Sebuah *debugger* baru [debug.gem](https://github.com/ruby/debug) di-*bundle*
57+
dalam Ruby. debug.gem adalah implementasi *debugger* cepat dan menyediakan
58+
banyak fitur, seperti *remote debugging*, *colorful* REPL, dan integrasi IDE
59+
(VSCode). *Gem* ini menggantikan pustaka standar `lib/debug.rb`.
60+
61+
## error_highlight: Lokasi fine-grained error pada backtrace
62+
63+
Sebuah *built-in gem*, error_highlight, diperkenalkan. *Gem* ini memberikan
64+
lokasi *fine-grained error* pada *backtrace*:
65+
66+
```
67+
$ ruby test.rb
68+
test.rb:1:in `<main>': undefined method `time' for 1:Integer (NoMethodError)
69+
70+
1.time {}
71+
^^^^^
72+
Did you mean? times
73+
```
74+
75+
*Gem* ini diaktifkan secara *default*. Anda dapat menonaktikannya dengan
76+
menggunakan opsi *command-line* `--disable-error_highlight`. Lihat
77+
[repositori](https://github.com/ruby/error_highlight) untuk detail.
78+
79+
## Perbaikan Irb
80+
81+
Akan dijelaskan pada *preview* berikutnya.
82+
83+
## Fitur penting lainnya
84+
85+
### Bahasa
86+
87+
* Nilai pada literal *Hash* dan *keyword argument* dapat diabaikan. [Feature #14579]
88+
* `{x:, y:}` adalah sebuah *syntax sugar* dari `{x: x, y: y}`.
89+
* `foo(x:, y:)` adalah sebuah *syntax sugar* dari `foo(x: x, y: y)`.
90+
91+
* *Pin operator* pada *pattern matching* sekarang mengambil sebuah *expression*. [Feature #17411]
92+
93+
```ruby
94+
Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a
95+
#=> [[3, 5], [5, 7], [11, 13]]
96+
```
97+
98+
99+
### RBS
100+
101+
RBS adalah sebuah bahasa untuk mendeskripsikan struktur dari program Ruby. Lihat
102+
[repositori](https://github.com/ruby/rbs) untuk detail.
103+
104+
Perubahan sejak Ruby 3.0.0:
105+
106+
* `rbs collection` diperkenalkan untuk mengatur *gem* dari RBS. [dokumen](https://github.com/ruby/rbs/blob/master/docs/collection.md)
107+
* Banyak *signature* pada pustaka *built-in* dan standar ditambahkan/diperbarui.
108+
* Selain itu, memuat banyak perbaikan *bug* dan peningkatan kinerja.
109+
110+
Lihat [CHANGELOG.md](https://github.com/ruby/rbs/blob/master/CHANGELOG.md)
111+
untuk informasi lebih lanjut.
112+
113+
### TypeProf
114+
115+
*TypeProf* adalah sebuah *static type analyzer* untuk Ruby. *TypeProf*
116+
menghasilkan sebuah prototipe RBS dari kode Ruby yang *non-type-annotated*.
117+
Lihat [dokumen](https://github.com/ruby/typeprof/blob/master/doc/doc.md)
118+
untuk detail.
119+
120+
Perubahan sejak Ruby 3.0.0:
121+
122+
* [Dukungan IDE eksperimental](https://github.com/ruby/typeprof/blob/master/doc/ide.md)
123+
telah diimplementasikan.
124+
* Banyak perbaikan bug dan peningkatan kinerja.
125+
126+
## Peningkatan kinerja
127+
128+
* MJIT
129+
* Untuk beban kerja seperti *Rails*, *default* `--jit-max-cache` diubah dari
130+
100 menjadi 10000. *Compiler* JIT tidak lagi mengabaikan *compilation*
131+
dari *method* yang memiliki panjang lebih dari 1000 instruksi.
132+
* Untuk mendukung *Zeitwerk* dari *Rails*, *JIT-ed code* tidak lagi dibatalkan
133+
ketika sebuah *TracePoint* untuk *class event* diaktifkan.
134+
135+
## Perubahan penting lainnya sejak 3.0
136+
137+
* *One-line pattern matching*, seperti `ary => [x, y, z]` tidak lagi eksperimental.
138+
* *Multiple assignment evaluation order* telah diubah sedikit. [[Bug #4443]](https://bugs.ruby-lang.org/issues/4443)
139+
* `foo[0], bar[0] = baz, qux` sebelumnya diproses dengan urutan `baz`, `qux`
140+
`foo`, dan kemudian `bar` pada Ruby 3.0. Pada Ruby 3.1, ini diproses dengan
141+
urutan `foo`, `bar`, `baz`, dan kemudian `qux`.
142+
* *Variable Width Allocation: Strings* (eksperimental) [[Bug #18239]](https://bugs.ruby-lang.org/issues/18239)
143+
144+
### Pembaruan pustaka standar
145+
146+
* Beberapa pustaka standar diperbarui.
147+
* RubyGems
148+
* Bundler
149+
* RDoc 6.4.0
150+
* ReLine
151+
* JSON 2.6.0
152+
* Psych 4.0.2
153+
* FileUtils 1.6.0
154+
* Fiddle
155+
* StringIO 3.0.1
156+
* IO::Console 0.5.9
157+
* IO::Wait 0.2.0
158+
* CSV
159+
* Etc 1.3.0
160+
* Date 3.2.0
161+
* Zlib 2.1.1
162+
* StringScanner
163+
* IpAddr
164+
* Logger 1.4.4
165+
* OStruct 0.5.0
166+
* Irb
167+
* Racc 1.6.0
168+
* Delegate 0.2.0
169+
* Benchmark 0.2.0
170+
* CGI 0.3.0
171+
* Readline(C-ext) 0.1.3
172+
* Timeout 0.2.0
173+
* YAML 0.2.0
174+
* URI 0.11.0
175+
* OpenSSL
176+
* DidYouMean
177+
* Weakref 0.1.1
178+
* Tempfile 0.1.2
179+
* TmpDir 0.1.2
180+
* English 0.7.1
181+
* Net::Protocol 0.1.2
182+
* Net::Http 0.2.0
183+
* BigDecimal
184+
* OptionParser 0.2.0
185+
* Set
186+
* Find 0.1.1
187+
* Rinda 0.1.1
188+
* Erb
189+
* NKF 0.1.1
190+
* Base64 0.1.1
191+
* OpenUri 0.2.0
192+
* SecureRandom 0.1.1
193+
* Resolv 0.2.1
194+
* Resolv::Replace 0.1.0
195+
* Time 0.2.0
196+
* PP 0.2.1
197+
* Prettyprint 0.1.1
198+
* Drb 2.1.0
199+
* Pathname 0.2.0
200+
* Digest 3.1.0.pre2
201+
* Un 0.2.0
202+
* *Bundled gem* berikut diperbarui.
203+
* minitest 5.14.4
204+
* power_assert 2.0.1
205+
* rake 13.0.6
206+
* test-unit 3.5.0
207+
* rbs 1.6.2
208+
* typeprof 0.20.0
209+
* *Default gem* berikut sekarang adalah *bundled gem*.
210+
* net-ftp
211+
* net-imap
212+
* net-pop
213+
* net-smtp
214+
* matrix
215+
* prime
216+
217+
Lihat [NEWS](https://github.com/ruby/ruby/blob/{{ release.tag }}/NEWS.md)
218+
atau [commit logs](https://github.com/ruby/ruby/compare/v3_0_0...{{ release.tag }})
219+
untuk lebih detail.
220+
221+
## Unduh
222+
223+
* <{{ release.url.gz }}>
224+
225+
SIZE: {{ release.size.gz }}
226+
SHA1: {{ release.sha1.gz }}
227+
SHA256: {{ release.sha256.gz }}
228+
SHA512: {{ release.sha512.gz }}
229+
230+
* <{{ release.url.xz }}>
231+
232+
SIZE: {{ release.size.xz }}
233+
SHA1: {{ release.sha1.xz }}
234+
SHA256: {{ release.sha256.xz }}
235+
SHA512: {{ release.sha512.xz }}
236+
237+
* <{{ release.url.zip }}>
238+
239+
SIZE: {{ release.size.zip }}
240+
SHA1: {{ release.sha1.zip }}
241+
SHA256: {{ release.sha256.zip }}
242+
SHA512: {{ release.sha512.zip }}
243+
244+
## Apa itu Ruby
245+
246+
Ruby pertama kali dikembangkan oleh Matz (Yukihiro Matsumoto) pada tahun 1993
247+
dan sekarang dikembangkan sebagai *Open Source*. Ruby berjalan di berbagai
248+
*platform* dan digunakan di seluruh dunia, khususnya pengembangan *web*.

0 commit comments

Comments
 (0)