Ruby 2.0.0-p0 Diluncurkan

Kami sangat senang untuk mengumumkan rilis Ruby 2.0.0-p0.

Ruby 2.0.0 merupakan rilis stabil pertama dari seri Ruby 2.0, dengan banyak fitur baru dan perbaikan untuk menanggapi semakin beragam dan memperluas tuntutan untuk Ruby.

Nikmati pemrograman dengan Ruby 2.0.0!

Unduhan

Apakah Ruby 2.0.0 Itu?

Fitur-Fitur baru

Beberapa highlight:

  • Fitur bahasa core
    • Argumen berkata kunci (keyword arguments), yang memberikan fleksibilitas untuk mendesain API
    • Module#prepend, cara baru untuk meng-extend sebuah class
    • Literal %i, yang membuat jajaran simbol dengan mudah
    • __dir__, yang mengembalikan nama dir file saat ini sedang dieksekusi
    • UTF-8 sebagai encoding default, yang membuat komentar ajaib dapat dihapus
  • Library
    • Enumerable#lazy dan Enumerator::Lazy, untuk (mungkin tak terbatas) stream yang lazy (malas) stream
    • Enumerator#size dan Range#size, untuk mengevaluasi ukuran secara lazy
    • #to_h, sebuah konvensi baru untuk mengkonversi ke Hash
    • Onigmo, sebuah engine regexp baru (fork dari Oniguruma)
    • API untuk mengatasi exception secara asynchronous
  • Support untuk debug
    • Support untuk DTrace, yang memungkinkan diagnosa run-time di production
    • TracePoint, yang merupakan API untuk tracing yang sudah ditingkatkan
  • Peningkatan performance
    • Optimisasi GC dengan cara penandaan bitmap
    • Optimisasi Kernel#require yang membuat startup Rails sangat cepat
    • Optimisasi VM seperti method dispatch
    • Optimisasi operasi pada Float

Sebagai tambahan, walaupun sebagai fitur experimen, 2.0.0 memuat Refinement, yang menambahkan konsep baru untuk modularitas Ruby.

Harap lihat juga NEWS untuk lebih banyak fitur, peningkatan dan rinciannya.

Kompatibilitas

Kami juga telah menjaga desain 2.0.0 untuk membuatnya cocok dengan 1.9. Bermigrasi dari 1.9 ke 2.0 akan lebih mudah daripada 1.8 ke 1.9. (Ketidakcocokan yang perlu diperhatikan akan dijelaskan nanti.)

Bahkan, berkat kerja berdedikasi pihak ketiga, beberapa populer aplikasi seperti Rails dan tDiary telah dilaporkan untuk bekerja pada versi rilis kandidat dari 2.0.0.

Dokumentasi

Kami juga telah membuat perbaikan dokumentasi yang banyak diminta para pengguna Ruby. Kami telah menambahkan sejumlah besar rdoc untuk module dan method. 2.0.0 akan menjadi sekitar 75% terdokumentasikan, sementara 1.9.3 sekitar 60%. Juga, kami telah menambahkan deskripsi sintaks Ruby. Anda dapat melihat:

ri ruby:syntax

Stabilitas

Perhatikan bahwa tidak seperti 1.9.0, 2.0.0 ADALAH rilis stabil. Semua penulis library sangat dianjurkan untuk mendukung 2.0.0. Seperti disebutkan di atas, maka akan relatif mudah untuk bermigrasi dari 1.9 2.0.

Ruby 2.0.0 siap untuk penggunaan praktis, dan akan benar-benar meningkatkan kehidupan Ruby Anda.

Catatan

Artikel Pengantar

Berikut adalah beberapa artikel pengantar fitur 2.0.0 oleh pihak ketiga:

Artikel-artikel berikut ini juga membantu, tetapi agak tertinggal berkaitan dengan refinement:

Juga, edisi terbaru "Rubyist Magazine" mencakup beberapa artikel yang ditulis oleh beberapa penulis untuk memperkenalkan beberapa fitur baru 2.0.0.

Meskipun artikel-artikel di atas akan ditulis dalam Bahasa Jepang, terjemahan bahasa Inggris direncanakan untuk masa depan.

Inkompatibilitas

Ada lima ketidakcocokan yang perlu diperhatikan:

  • Encoding default untuk skrip Ruby sekarang UTF-8 [#6679]. Beberapa orang melaporkan bahwa hal itu mempengaruhi program yang ada, seperti beberapa program benchmark menjadi sangat lambat [ruby-dev:46547].
  • Iconv telah dihapus, yang sudah tidak didukung lagi sejak M17N sudah diperkenalkan di Ruby 1.9. Gunakan String#encode, dll. sebagai penggantinya.
  • Ada kerusakan ABI [ruby-core:48984]. Kami berpikir bahwa pengguna normal dapat/sebaiknya menginstal ulang library extension. Anda harus menyadari: JANGAN MENGKOPI FILE .so ATAU .bundle dari 1.9.
  • #lines, #chars, #codepoints, #bytes sekarang mengembailkan sebuat Array, bukan Enumerator [#6670]. Perubahan ini memungkinkan Anda untuk menghindari idiom umum "lines.to_a". Harap gunakan #each_line, dll. untuk mendapatkan sebuah Enumerator.
  • Object#inspect selalu mengembalikan sebuah string seperti #<ClassName:0x…>, bukan men-delegate ke #to_s. [#2152]

Ada beberapa inkompatibilitas yang relatif kecil [ruby-core:49119].

Status Refinements

Kami telah menambahkan fitur bernama Refinement, yang menambah konsep baru pada modularitas Ruby. Namun, perlu diketahui bahwa Refinement masih sebuah fitur eksperimental: kami dapat mengubah spesifikasi di masa depan. Meskipun begitu, kami ingin Anda untuk mencobanya dan memberi kami pemikiran Anda. Tanggapan Anda akan membantu untuk menempa fitur menarik ini.

Ucapan Terima Kasih

Sangat banyak orang yang berkontribusi pada 2.0.0. Bahkan ucapan terima kasih untuk beberapa bagian kontribusi menjadi terlalu besar untuk dimuat di sini. Maaf, tapi izinkan saya untuk menambahkan link ke halaman terima kasih khusus.

Terima kasih semuanya!