|
| 1 | +--- |
| 2 | +layout: news_post |
| 3 | +title: "Ruby 3.3.0-preview1 Dirilis" |
| 4 | +author: "naruse" |
| 5 | +translator: "meisyal" |
| 6 | +date: 2023-05-12 00:00:00 +0000 |
| 7 | +lang: id |
| 8 | +--- |
| 9 | + |
| 10 | +{% assign release = site.data.releases | where: "version", "3.3.0-preview1" | first %} |
| 11 | + |
| 12 | +Kami dengan senang hati mengumumkan rilis dari Ruby {{ release.version }}. |
| 13 | +Ruby 3.3. menambahkan sebuah *pure-Ruby* JIT *compiler* baru yang bernama RJIT, |
| 14 | +menggunakan Lrama sebagai *parser generator*, dan memperbaiki performa khususnya |
| 15 | +YJIT. |
| 16 | + |
| 17 | +## RJIT |
| 18 | + |
| 19 | +* Memperkenalkan sebuah *pure-Ruby* JIT *compiler* dan menggantikan MJIT. |
| 20 | + * RJIT hanya mendukung arsitektur x86\_64 pada *platform Unix*. |
| 21 | + * Berbeda dengan MJIT, RJIT tidak membutuhkan sebuah C *compiler* saat *runtime*. |
| 22 | +* RJIT ada untuk tujuan eksperimen. |
| 23 | + * Anda harus tetap menggunakan YJIT pada *production*. |
| 24 | +* Jika Anda tertarik untuk mengembangkan JIT pada Ruby, mohon cek |
| 25 | + [k0kubun's presentation on Day 3 of RubyKaigi](https://rubykaigi.org/2023/presentations/k0kubun.html#day3). |
| 26 | + |
| 27 | +## Menggunakan Lrama ketimbang Bison |
| 28 | + |
| 29 | +* Mengganti Bison dengan [Lrama LALR parser generator](https://github.com/yui-knk/lrama) [Feature #19637](https://bugs.ruby-lang.org/issues/19637) |
| 30 | + * Jika Anda tertarik, silakan lihat [The future vision of Ruby Parser](https://rubykaigi.org/2023/presentations/spikeolaf.html) |
| 31 | + |
| 32 | +## YJIT |
| 33 | + |
| 34 | +* Peningkatan performa yang signifikan dibanding Ruby 3.2 |
| 35 | + * Dukungan *splat* dan *rest argument* telah ditingkatkan. |
| 36 | + * *Register* dialokasikan untuk operasi *stack* dari *virtual machine*. |
| 37 | + * Pemanggilan dengan *optional argument* dikompilasi. |
| 38 | + * `Integer#!=`, `String#!=`, `Kernel#block_given?`, `Kernel#is_a?`, |
| 39 | + `Kernel#instance_of?`, `Module#===` dioptimisasi. |
| 40 | + * *Instant variable* tidak lagi keluar ke *intepreter* dengan *Object Shapes* |
| 41 | + yang sangat besar. |
| 42 | +* *Metadata* dari kode yang dikompilasi menggunakan *memory* lebih sedikit. |
| 43 | +* Peningkatan *code generation* pada ARM64 |
| 44 | +* Opsi untuk menjalankan YJIT pada *paused mode* dan mengaktifkan kembali secara manual |
| 45 | + * `--yjit-pause` dan `RubyVM::YJIT.resume` |
| 46 | + * Ini dapat digunakan untuk mengaktifkan YJIT ketika aplikasi Anda selesai *booting* |
| 47 | +* Opsi *exit tracing* sekarang mendukung *sampling* |
| 48 | + * `--trace-exits-sample-rate=N` |
| 49 | +* Perbaikan beberapa *bug* |
| 50 | + |
| 51 | + |
| 52 | + |
| 53 | +## Fitur Penting Lainnya |
| 54 | + |
| 55 | +### Bahasa |
| 56 | + |
| 57 | + |
| 58 | + |
| 59 | +## Perbaikan performa |
| 60 | + |
| 61 | +* `defined?(@ivar)` dioptimisasi dengan *Object Shapes*. |
| 62 | + |
| 63 | +## Perubahan penting lainnya sejak 3.2 |
| 64 | + |
| 65 | + |
| 66 | + |
| 67 | +## Isu kompatibilitas |
| 68 | + |
| 69 | +Catatan: Tidak termasuk perbaikan *bug* dari fitur. |
| 70 | + |
| 71 | +### Constant terhapus |
| 72 | + |
| 73 | +Berikut ini adalah *constant* yang telah dihapus. |
| 74 | + |
| 75 | + |
| 76 | + |
| 77 | +### Method terhapus |
| 78 | + |
| 79 | +Berikut ini adalah *method* yang telah dihapus. |
| 80 | + |
| 81 | + |
| 82 | + |
| 83 | +## Isu kompatibilitas Stdlib |
| 84 | + |
| 85 | +### `ext/readline` dipensiunkan |
| 86 | + |
| 87 | +* Kami memiliki `reline` yang merupakan implementasi Ruby murni dan kompatibel |
| 88 | + dengan `ext/readline` API. Kami bergantung pada `reline` di masa depan. Jika |
| 89 | + Anda perlu untuk menggunakan `ext/readline`, Anda dapat memasang `ext/readline` |
| 90 | + melalui rubygems.org dengan `gem install readline-ext`. |
| 91 | +* Kami tidak lagi memasang pustaka, seperti `libreadline` atau `libedit`. |
| 92 | + |
| 93 | +## Pembaruan C API |
| 94 | + |
| 95 | +### C API diperbarui |
| 96 | + |
| 97 | +Berikut adalah API yang telah diperbarui. |
| 98 | + |
| 99 | + |
| 100 | + |
| 101 | +### C API terhapus |
| 102 | + |
| 103 | +Berikut adalah API yang telah dihapus. |
| 104 | + |
| 105 | + |
| 106 | + |
| 107 | +## Pembaruan pustaka standar |
| 108 | + |
| 109 | + |
| 110 | + |
| 111 | +Berikut adalah *default gem* yang telah diperbarui. |
| 112 | + |
| 113 | +* RubyGems 3.5.0.dev |
| 114 | +* bigdecimal 3.1.4 |
| 115 | +* bundler 2.5.0.dev |
| 116 | +* csv 3.2.7 |
| 117 | +* fiddle 1.1.2 |
| 118 | +* fileutils 1.7.1 |
| 119 | +* irb 1.6.4 |
| 120 | +* optparse 0.4.0.pre.1 |
| 121 | +* psych 5.1.0 |
| 122 | +* reline 0.3.3 |
| 123 | +* stringio 3.0.7 |
| 124 | +* strscan 3.0.7 |
| 125 | +* syntax_suggest 1.0.4 |
| 126 | +* time 0.2.2 |
| 127 | +* timeout 0.3.2 |
| 128 | +* uri 0.12.1 |
| 129 | + |
| 130 | +Berikut adalah *bundled gem* yang telah diperbarui. |
| 131 | + |
| 132 | +* minitest 5.18.0 |
| 133 | +* rbs 3.1.0 |
| 134 | +* typeprof 0.21.7 |
| 135 | +* debug 1.8.0 |
| 136 | + |
| 137 | +Lihat rilis GitHub, seperti [Logger](https://github.com/ruby/logger/releases) |
| 138 | +atau *changelog* untuk detail dari *default gem* atau *bundled gem*. |
| 139 | + |
| 140 | +Lihat [NEWS](https://github.com/ruby/ruby/blob/{{ release.tag }}/NEWS.md) |
| 141 | +atau [commit logs](https://github.com/ruby/ruby/compare/v3_2_0...{{ release.tag }}) |
| 142 | +untuk lebih detail. |
| 143 | + |
| 144 | +Dengan perubahan tersebut, [{{ release.stats.files_changed }} berkas berubah, {{ release.stats.insertions }} sisipan(+), {{ release.stats.deletions }} terhapus(-)](https://github.com/ruby/ruby/compare/v3_2_0...{{ release.tag }}#file_bucket) |
| 145 | +sejak Ruby 3.2.0! |
| 146 | + |
| 147 | +## Unduh |
| 148 | + |
| 149 | +* <{{ release.url.gz }}> |
| 150 | + |
| 151 | + SIZE: {{ release.size.gz }} |
| 152 | + SHA1: {{ release.sha1.gz }} |
| 153 | + SHA256: {{ release.sha256.gz }} |
| 154 | + SHA512: {{ release.sha512.gz }} |
| 155 | + |
| 156 | +* <{{ release.url.xz }}> |
| 157 | + |
| 158 | + SIZE: {{ release.size.xz }} |
| 159 | + SHA1: {{ release.sha1.xz }} |
| 160 | + SHA256: {{ release.sha256.xz }} |
| 161 | + SHA512: {{ release.sha512.xz }} |
| 162 | + |
| 163 | +* <{{ release.url.zip }}> |
| 164 | + |
| 165 | + SIZE: {{ release.size.zip }} |
| 166 | + SHA1: {{ release.sha1.zip }} |
| 167 | + SHA256: {{ release.sha256.zip }} |
| 168 | + SHA512: {{ release.sha512.zip }} |
| 169 | + |
| 170 | +## Apa itu Ruby |
| 171 | + |
| 172 | +Ruby pertama kali dikembangkan oleh Matz (Yukihiro Matsumoto) pada 1993 |
| 173 | +dan sekarang dikembangkan sebagai *Open Source*. Ruby berjalan pada berbagai |
| 174 | +*platform* dan digunakan di seluruh dunia, khususnya pengembangan *web*. |
0 commit comments