|
| 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