Skip to content

Commit 0c72b6e

Browse files
authored
Merge pull request #1961 from meisyal/ruby-2.6.0-rc2-news
Translate Ruby 2.6.0-rc2 released news (id)
2 parents 7bf7df8 + 9aaf816 commit 0c72b6e

File tree

1 file changed

+180
-0
lines changed

1 file changed

+180
-0
lines changed
Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
---
2+
layout: news_post
3+
title: "Ruby 2.6.0-rc2 Rilis"
4+
author: "naruse"
5+
translator: "meisyal"
6+
date: 2018-12-15 00:00:00 +0000
7+
lang: id
8+
---
9+
10+
Kami dengan senang hati mengumumkan rilis dari Ruby 2.6.0-rc2.
11+
12+
Ruby 2.6.0-rc2 adalah kandidat rilis kedua dari Ruby 2.6.0.
13+
RC2 dirilis untuk mengetes *Bundler* 1.17 daripada 2.0 yang di-*bundle*.
14+
Kandidat ini memperkenalkan beberapa fitur baru dan perbaikan performa,
15+
sebagai contoh:
16+
17+
## JIT
18+
19+
Ruby 2.6 memperkenalkan sebuah implementasi awal dari *compiler* JIT
20+
(Just-in-time).
21+
22+
*Compiler* JIT bertujuan untuk memperbaiki performa dari program Ruby apapun
23+
yang dieksekusi. Berbeda dengan JIT *compiler* biasanya pada bahasa pemrograman
24+
lain, *compiler* JIT dari Ruby melakukan kompilasi JIT melalui sebuah jalan
25+
unik, yang mencetak kode C ke sebuah *disk* dan mengeluarkan proses *compiler*
26+
C untuk menghasilkan kode asli.
27+
Lihat juga: [MJIT organization by Vladimir Makarov](https://github.com/vnmakarov/ruby/tree/rtl_mjit_branch#mjit-organization).
28+
29+
Bagaimana cara menggunakan: Tetapkan `--jit` pada *command line* atau `$RUBYOPT`
30+
*environment variable*. Menetapkan `--jit-verbose=1` memperbolehkan untuk
31+
mencetak informasi dasar dari kompilasi JIT yang berjalan. Lihat `ruby --help`
32+
untuk pilihan lainnya.
33+
34+
Tujuan utama dari rilis JIT ini adalah untuk menyediakan sebuah kesempatan untuk
35+
mengecek jika ini berjalan di *platform* Anda dan menemukan risiko keamanan
36+
sebelum rilis 2.6. *Compiler* JIT didukung hanya ketika Ruby dibuat oleh GCC,
37+
Clang, atau Microsoft VC++, yang mana dibutuhkan saat *runtime*. Jika
38+
sebaliknya, Anda tidak dapat menggunakannya.
39+
40+
Sampai versi 2.6.0-rc2, kami telah meraih 1.7x performa lebih cepat
41+
dibanding Ruby 2.5 pada CPU-*intensive non-trivial benchmark workload* yang
42+
dikenal dengan Optcarrot <https://gist.github.com/k0kubun/d7f54d96f8e501bbbc78b927640f4208>.
43+
Kami akan memperbaiki performa pada *memory-intensive workload*, seperti
44+
aplikasi Rails.
45+
46+
Nantikan era baru dari performa Ruby.
47+
48+
## RubyVM::AbstractSyntaxTree [Eksperimental]
49+
50+
Ruby 2.6 mengenalkan modul `RubyVM::AbstractSyntaxTree`.
51+
52+
Modul ini memiliki *method* `parse` yang mem-*parse string* dari kode Ruby yang
53+
diberikan dan mengembalikan AST (Abstract Syntax Tree) *node*, dan *method*
54+
`parse_file` yang mem-*parse* berkas dan mengembalikan AST *node*.
55+
Kelas `RubyVM::AbstractSyntaxTree::Node` juga diperkenalkan. Anda bisa
56+
mendapatkan informasi lokasi dan *children node* dari objek `Node`. Fitur ini
57+
eksperimental. Kesesuaian struktur dari AST *node* tidak dijamin.
58+
59+
## Fitur-fitur Baru
60+
61+
* Menambahkan sebuah alias baru `then` pada `Kernel#yield_self`. [[Fitur #14594]](https://bugs.ruby-lang.org/issues/14594)
62+
63+
* `else` tanpa `rescue` sekarang menyebabkan sebuah *syntax error*. [EXPERIMENTAL][[Feature #14606]](https://bugs.ruby-lang.org/issues/14606)
64+
65+
* penamaan konstan bisa dimulai dengan sebuah huruf kapital non-ASCII. [[Fitur #13770]](https://bugs.ruby-lang.org/issues/13770)
66+
67+
* Memperkenalkan endless range. [[Fitur #12912]](https://bugs.ruby-lang.org/issues/12912)
68+
69+
Sebuah endless range, `(1..)`, diperkenalkan. Ini berjalan tanpa ada akhirnya. Biasanya digunakan untuk kasus:
70+
71+
ary[1..] # identik dengan ary[1..-1] tanpa magical -1
72+
(1..).each {|index| ... } # inifinite loop dari indeks 1
73+
ary.zip(1..) {|elem, index| ... } # ary.each.with_index(1) { ... }
74+
75+
* Menambahkan `Binding#source_location`. [[Feature #14230]](https://bugs.ruby-lang.org/issues/14230)
76+
77+
*Method* ini mengembalikan sumber lokasi dari *binding*, sebuah *array* dua
78+
elemen dari `__FILE__` dan `__LINE__`. Secara tradisi, informasi yang sama
79+
mungkin dapat diambil dengan `eval("[__FILE__, __LINE__]", binding)`, tetapi
80+
kami sedang merencanakan untuk mengubah perilaku ini sehingga `Kernel#eval`
81+
mengabaikan sumber lokasi *binding* [[Bug #4352]](https://bugs.ruby-lang.org/issues/4352).
82+
Sehingga, pengguna seharusnya menggunakan *method* yang baru diperkenalkan ini
83+
daripada `Kernel#eval`.
84+
85+
* Menambahkan pilihan `:exception` agar `Kernel#system` mengeluarkan *error*
86+
daripada mengembalikan `false`. [[Feature #14386]](https://bugs.ruby-lang.org/issues/14386)
87+
88+
* Menambahkan mode *oneshot* [[Feature#15022]](https://bugs.ruby-lang.org/issues/15022)
89+
90+
* Mode ini mengecek "apakah setiap baris dieksekusi minimal sekali atau tidak",
91+
daripada "berapa banyak setiap baris dieksekusi". Sebuah *hook* untuk setiap
92+
baris ditembakan paling banyak sekali dan setelah itu penanda *hook* dihapus,
93+
sebagai contoh ini berjalan dengan *zero overhead*.
94+
* Menambahkan argumen kata kunci `:oneshot_lines` pada Coverage.start.
95+
* Menambahkan argumen kata kunci `:stop` dan `:clear` pada Coverage.result.
96+
Jika `clear` *true* maka mengubah *counter* menjadi nol. Jika `stop` *true*
97+
maka nonaktifkan pengukuran *coverage*.
98+
* Coverage.line_stub, yang mana adalah sebuah fungsi pembantu yang sederhana
99+
yang dapat membuat "stub" dari baris *coverage* dari sebuah kode sumber yang
100+
diberikan.
101+
102+
* `FileUtils#cp_lr`. [[Feature #4189]](https://bugs.ruby-lang.org/issues/4189)
103+
104+
## Perbaikan performa
105+
106+
* Mempercepat `Proc#call` karena kami tidak peduli `$SAFE` lagi.
107+
[[Feature #14318]](https://bugs.ruby-lang.org/issues/14318)
108+
109+
Dengan *benchmark* `lc_fizzbuzz` yang menggunakan `Proc#call` berkali-kali
110+
kami dapat mengukur x1.4 kemajuan [[Bug #10212]](https://bugs.ruby-lang.org/issues/10212).
111+
112+
* Mempercepat `block.call` di mana `block` diterima parameter *block*. [[Feature #14330]](https://bugs.ruby-lang.org/issues/14330)
113+
114+
Ruby 2.5 memperbaiki performa *block passing*. [[Feature #14045]](https://bugs.ruby-lang.org/issues/14045)
115+
116+
Selain itu, Ruby 2.6 memperbaiki performa dari pemanggilan *passed block*.
117+
Dengan mikro *benchmark* kami dapat mengamati x2.6 kemajuan.
118+
119+
* Transient Heap (theap) diperkenalkan. [[Bug #14858]](https://bugs.ruby-lang.org/issues/14858) [[Feature #14989]](https://bugs.ruby-lang.org/issues/14989)
120+
121+
theap adalah *heap* yang diatur untuk *short-living memory object* yang
122+
diarahkan oleh kelas tertentu (Array, Hash, Object, dan Struct). Sebagai
123+
contoh, membuat objek Hash yang kecil dan *short-living* 2x lebih cepat.
124+
Dengan rdoc *benchmark*, kami mengamati 6-7% kemajuan.
125+
126+
## Perubahan penting lainnya sejak 2.5
127+
128+
* `$SAFE` adalah sebuah proses *state* global dan kita dapat mengatur ke `0` lagi. [[Feature #14250]](https://bugs.ruby-lang.org/issues/14250)
129+
130+
* Menempatkan parameter `safe_level` ke `ERB.new` tidak berlaku lagi. Argumen
131+
`trim_mode` dan `eoutvar` diubah menjadi argumen kata kunci. [[Feature #14256]](https://bugs.ruby-lang.org/issues/14256)
132+
133+
* Mendukung versi Unicode 11. Ini akan direncanakan untuk mendukung versi 12
134+
dan 12.1 pada rilis TEENY dari Ruby 2.6.
135+
136+
* Menggabungkan RubyGems 3.0.0.beta3. Opsi `--ri` dan `--rdoc` dihapus. Mohon
137+
gunakan opsi `--document` dan `--no-document`.
138+
139+
* Menggabungkan [Bundler](https://github.com/bundler/bundler) sebagai gem
140+
*default*.
141+
142+
Lihat [NEWS](https://github.com/ruby/ruby/blob/v2_6_0_rc2/NEWS)
143+
atau [commit logs](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0_rc2)
144+
untuk detail.
145+
146+
Dengan perubahan tersebut,
147+
[6411 berkas berubah, 228864 sisipan(+), 97600 terhapus(-)](https://github.com/ruby/ruby/compare/v2_5_0...v2_6_0_rc2)
148+
sejak Ruby 2.5.0!
149+
150+
Nikmati memprogram dengan Ruby 2.6.0-rc2!
151+
152+
## Download
153+
154+
* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-rc2.tar.gz>
155+
156+
SIZE: 16723556 bytes
157+
SHA1: a4d7f8c8c3584a60fe1a57d03d80162361fe3c78
158+
SHA256: 9c0245e96379246040f1fd0978f8e447e7f47cdccbdaffdb83302a995276b62b
159+
SHA512: 789f608f93db6e12835911f3105d9abe2fabb67cd22dc3bafdff38716ac56974925738e7f7788ebef5bdf67b6fd91f84a4ee78a3e5d072cfc8ee0972de737b08
160+
161+
* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-rc2.zip>
162+
163+
SIZE: 20643747 bytes
164+
SHA1: c1a2898949d929dd952880f1c1c2bac2ef2609b4
165+
SHA256: e8a446cf1f2ffc14483604de0a5e12c2578dd2f672ae87798ca2bbb9b7b73899
166+
SHA512: 2d06feae13f485f5da59574672b14d03881ed532d652648f94e2435f5d81df623b5ef532b8ba8e0b9bc4ee6baf7c0328a5610eab753a9020a0fea2673254c76c
167+
168+
* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-rc2.tar.bz2>
169+
170+
SIZE: 14581998 bytes
171+
SHA1: 94bbee97de4955e67effb7f512c58300617a3a09
172+
SHA256: b3d03e471e3136f43bb948013d4f4974abb63d478e8ff7ec2741b22750a3ec50
173+
SHA512: 9bfbe83fd3699b71bae2350801d8c967eb128e79b62a9d36fc0f011b83c53cab28a280939f4cc9f0a28f9bf02dce8eea30866ca4d06480dc44289400abf580ba
174+
175+
* <https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-rc2.tar.xz>
176+
177+
SIZE: 11908088 bytes
178+
SHA1: 13a7f06d832dc28989e3e4321490a6ba528ed023
179+
SHA256: d620b3d87b3190867304067f3ce77f5305f7ec1b2e73b09c17710c97c028986d
180+
SHA512: a3dc43c0bc70dfdb9ff0d18b5b9797bbf332524f5d3bbb7940cf4e32286ca715808acfd11ebf3cdbe358a2466b7c6b5be3a7a784af7eb95c071fe1f8b4ab1261

0 commit comments

Comments
 (0)