Ruby'nin Tarihi - History of Ruby
Bu, Ruby programlama dilinin tarihidir .
gebe kalma
Matsumoto, Ruby'nin 1993'te dünyaya geldiğini söyledi. Ruby -talk e - posta listesine 1999 yılında yazdığı bir gönderide, dille ilgili ilk fikirlerinden bazılarını anlatıyor:
Meslektaşımla nesne yönelimli bir betik dili olasılığı hakkında konuşuyordum. Perl'i biliyordum (Perl4, Perl5 değil), ama gerçekten sevmedim, çünkü oyuncak bir dilin kokusu vardı (hala var). Nesne yönelimli dil çok umut verici görünüyordu. Python'u o zaman biliyordum . Ama beğenmedim, çünkü bunun gerçek bir nesne yönelimli dil olduğunu düşünmedim – OO özellikleri dile eklenmiş gibi görünüyordu. 15 yıllık bir dil manyağı ve OO hayranı olarak, gerçekten nesne yönelimli, kullanımı kolay bir betik dili istedim. Aradım ama bulamadım. Bu yüzden yapmaya karar verdim.
Matsumoto, Ruby'nin tasarımını, Smalltalk'taki gibi bir nesne sistemi, üst düzey işlevlerden ilham alan bloklar ve Perl'inki gibi pratik fayda ile özünde basit bir Lisp dili gibi olarak tanımlar.
"Ruby" adı, Matsumoto ve Keiju Ishitsuka arasında, dil için herhangi bir kod yazılmadan önce 24 Şubat 1993'te çevrimiçi bir sohbet oturumu sırasında ortaya çıktı. Başlangıçta iki isim önerildi: " Mercan " ve " Yakut ". Matsumoto, daha sonraki bir e-postada Ishitsuka'ya ikincisini seçti. Matsumoto daha sonra "Ruby" adını seçerken bir faktöre dikkat çekti - bu, meslektaşlarından birinin doğum taşıydı .
İlk yayın
Ruby 0.95'in ilk kamuya açık sürümü 21 Aralık 1995'te Japon yerel haber gruplarında duyuruldu . Ardından, iki gün içinde Ruby'nin üç sürümü daha yayınlandı. Sürüm , yeni dil için ilk posta listesi olan Japonca yakut listesi posta listesinin piyasaya sürülmesiyle aynı zamana denk geldi .
Geliştirmenin bu aşamasında, nesne yönelimli tasarım, kalıtımlı sınıflar , karışımlar , yineleyiciler , kapatmalar , istisna işleme ve çöp toplama dahil olmak üzere Ruby'nin sonraki sürümlerinde tanıdık olan birçok özellik zaten mevcuttu .
Erken sürümler
Ruby 0.95'in 1995'te piyasaya sürülmesinin ardından, sonraki yıllarda Ruby'nin birkaç kararlı sürümü yayınlandı:
- Yakut 1.0: 25 Aralık 1996
- Ruby 1.2: Aralık 1998
- Ruby 1.4: Ağustos 1999
- Ruby 1.6: Eylül 2000
1997'de Ruby ile ilgili ilk makale Web'de yayınlandı. Aynı yıl, Matsumoto netlab.jp tarafından Ruby üzerinde tam zamanlı geliştirici olarak çalışmak üzere işe alındı.
1998'de, Matsumoto tarafından Ruby Uygulama Arşivi, Ruby için basit bir İngilizce ana sayfa ile birlikte başlatıldı.
1999'da, ilk İngilizce posta listesi ruby-talk başladı ve bu, Japonya dışındaki dile artan bir ilginin sinyalini verdi. Aynı yıl, Matsumoto ve Keiju Ishitsuka , Ekim 1999'da Japonya'da yayınlanan Nesne Yönelimli Komut Dosyası Dili Ruby (オブジェクト指向スクリプト言語 Ruby) adlı Ruby üzerine ilk kitabı yazdılar . Ruby üzerine Japonca yayınlanmış 20 kitap.
2000 yılına gelindiğinde Ruby, Japonya'da Python'dan daha popülerdi. Eylül 2000'de, ilk İngilizce kitap olan Programming Ruby basıldı ve daha sonra halka ücretsiz olarak yayınlandı ve Ruby'nin İngilizce konuşanlar arasında benimsenmesini daha da genişletti. 2002'nin başlarında, İngilizce ruby-talk e - posta listesi, Japonca'daki ruby-listesinden daha fazla mesaj alıyordu ve bu , Ruby'nin Japonca konuşulmayan dünyada artan popülaritesini gösteriyordu.
Yakut 1.8
Ruby 1.8 ilk olarak Ağustos 2003'te piyasaya sürüldü, uzun bir süre stabil kaldı ve Haziran 2013'te kullanımdan kaldırıldı. Kullanımdan kaldırılmış olmasına rağmen, hala ona dayalı kodlar var. Ruby 1.8, Ruby 1.9 ile yalnızca kısmen uyumludur.
Ruby 1.8, birçok endüstri standardının konusu olmuştur. Ruby'nin dil özellikleri , Japon Endüstriyel Standartlar Komitesi'ne (JISC) ve ardından Uluslararası Standardizasyon Örgütü'ne (ISO) sunulmak üzere Bilgi-Teknoloji Tanıtım Ajansı'nın (bir Japon devlet kurumu) Açık Standartları Destekleme Merkezi tarafından geliştirilmiştir . 2011 yılında Japon Endüstri Standardı (JIS X 3017) ve 2012 yılında uluslararası standart ( ISO/IEC 30170 ) olarak kabul edilmiştir.
2005 yılı civarında, Ruby diline olan ilgi, Ruby'de yazılmış bir web çerçevesi olan Ruby on Rails ile birlikte arttı . Rails, Ruby'nin artan farkındalığıyla sık sık kredilendirilir.
Yakut 1.9
Ruby 1.9, 2007'de Noel Günü'nde piyasaya sürüldü. 31 Ekim 2011'de yayınlanan Ruby 1.9.3 ile geçerli olmak üzere, Ruby, Ruby Lisansı ve GPL kapsamında çift lisanslı olmaktan, Ruby Lisansı altında çift lisanslı olmaya ve iki lisanslı olmaya geçti. madde BSD lisansı. 1.9'un benimsenmesi, birçok popüler üçüncü taraf mücevherinin yeniden yazılmasını gerektiren 1.8'den yapılan değişikliklerle yavaşladı .
Ruby 1.9, 1.8 serisi üzerinde birçok önemli değişiklik getiriyor. Örnekler şunları içerir:
- Blok yerel değişkenler (yerel olarak değişkenler blok beyan edildiği)
- ek bir lambda sözdizimi:
f = ->(a,b) { puts a + b } - sembol tuşları için iki nokta üst üste kullanan ek bir Hash değişmez sözdizimi:
{symbol_key: "value"} == {:symbol_key => "value"} - dize başına karakter kodlamaları desteklenir
- yeni soket API'si ( IPv6 desteği)
-
require_relativeithalat güvenliği
Ruby 1.9, 23 Şubat 2015'ten beri kullanılmamaktadır ve artık hata ve güvenlik düzeltmeleri almayacak. Kullanıcıların daha yeni bir sürüme yükseltmeleri önerilir.
Yakut 2.0
Ruby 2.0, aşağıdakiler de dahil olmak üzere birkaç yeni özellik ekledi:
- yöntem anahtar kelime argümanları,
- bir
Module#prependsınıfı genişletmek için yeni bir yöntem , - bir dizi sembol oluşturmak için yeni bir hazır bilgi,
- Numaralandırılabilirlerin tembel değerlendirmesi için yeni API ve
- nesneleri Hash'lere dönüştürmek için #to_h kullanmanın yeni bir kuralı.
Ruby 2.0, Ruby 1.9.3 ile tamamen geriye dönük uyumlu olacak şekilde tasarlandı. 24 Şubat 2013'teki resmi 2.0.0 sürümünden itibaren, yalnızca beş bilinen (küçük) uyumsuzluk vardı.
Ruby 2.0, 24 Şubat 2016'dan beri kullanılmamaktadır ve artık hata ve güvenlik düzeltmeleri almayacak. Kullanıcıların daha yeni bir sürüme yükseltmeleri önerilir.
Yakut 2.1
Ruby 2.1.0, 2013'te Noel Günü'nde piyasaya sürüldü. Sürüm, hızlandırmaları, hata düzeltmelerini ve kitaplık güncellemelerini içeriyor.
2.1.0'dan başlayarak, Ruby'nin sürüm oluşturma politikası daha çok anlamsal sürüm oluşturmaya benzer . Benzer olmasına rağmen, Ruby'nin sürüm oluşturma politikası anlamsal sürüm oluşturma ile uyumlu değildir:
| yakut | anlamsal sürüm oluşturma |
|---|---|
| MAJOR : MINOR'da yayınlanamayan uyumsuz değişiklik olduğunda artırıldı. Özel etkinlikler için ayrılmıştır. | MAJOR : Uyumsuz API değişiklikleri yaptığınızda artar. |
| KÜÇÜK : her Noel'de artırılır, API uyumsuz olabilir . | KÜÇÜK : geriye dönük uyumlu bir şekilde işlevsellik eklediğinizde artar . |
| TEENY : API uyumluluğunu koruyan güvenlik veya hata düzeltmesi. 10'dan fazla artırılabilir (2.1.11 gibi) ve 2-3 ayda bir yayınlanacak. | YAMA : geriye dönük uyumlu hata düzeltmeleri yaptığınızda artırıldı. |
| YAMA : son KÜÇÜK sürümden bu yana tamamlama sayısı (KÜÇÜK bırakıldığında 0'da sıfırlanacaktır). | - |
Anlamsal sürüm oluşturma ayrıca yayın öncesi ve yapı meta verileri için ek etiketler sağlar, MAJOR.MINOR.PATCH biçiminin uzantıları olarak mevcuttur, Ruby'de mevcut değildir.
Ruby 2.1, 1 Nisan 2017'den beri kullanılmamaktadır ve artık hata ve güvenlik düzeltmeleri almayacak. Kullanıcıların daha yeni bir sürüme yükseltmeleri önerilir.
Yakut 2.2
Ruby 2.2.0, 2014'te Noel Günü'nde piyasaya sürüldü. Sürüm, hızlandırma, hata düzeltmeleri ve kitaplık güncellemeleri içeriyor ve kullanımdan kaldırılmış bazı API'leri kaldırıyor. En önemlisi, Ruby 2.2.0 bellek işlemede değişiklikler getiriyor – artımlı bir çöp toplayıcı, sembollerin çöp toplama desteği ve doğrudan jemalloc'a karşı derleme seçeneği. Ayrıca vfork (2)'yi system() ve spawn() ile kullanmak için deneysel destek ve Unicode 7.0 spesifikasyonu için ek destek içerir .
Kullanılmayan veya kaldırılan özellikler arasında callcc, DL kitaplığı, Digest::HMAC, lib/rational.rb, lib/complex.rb, GServer, Logger::Application ve çeşitli C API işlevleri yer alır.
Ruby 2.2, 1 Nisan 2018'den beri kullanılmamaktadır ve artık hata ve güvenlik düzeltmeleri almayacak. Kullanıcıların daha yeni bir sürüme yükseltmeleri önerilir.
- PowerPC64 performansı
- 2.2.1 sürümünden bu yana, PowerPC64 üzerindeki Ruby MRI performansı iyileştirildi.
Yakut 2.3
Ruby 2.3.0, 2015 yılında Noel Günü'nde piyasaya sürüldü. Birkaç dikkate değer değişiklik şunları içerir:
- Tüm dize değişmezlerini varsayılan olarak dondurulmuş olarak işaretleme yeteneği ve sonuç olarak dize işlemlerinde büyük bir performans artışı.
- Yalnızca anahtarlar yerine anahtar/değer çiftlerinin doğrudan kontrol edilmesini sağlamak için karma karşılaştırma.
- Sıfır kullanımı kolaylaştırabilen yeni bir güvenli navigasyon operatörü
&.(örneğin, yerine kullanabiliriz ).if obj && obj.foo && obj.foo.barif obj&.foo&.bar - Did_you_mean mücevher artık varsayılan olarak paketlenmiş ve otomatik olarak benzer ad benzerliği önermek için başlangıçta gerekli olan NameError veya NoMethodError .
-
Derinlemesine yuvalanmış değerleri kolayca çıkarmak için Hash#dig ve Array#dig (örneğin verilen , Foo Baz değeri artık tarafından alınabilir ).
profile = { social: { wikipedia: { name: 'Foo Baz' } } }profile.dig(:social, :wikipedia, :name) -
.grep_v(regexp)bu, diğer yeni özelliklere ek olarak belirli bir normal ifadenin tüm olumsuz örnekleriyle eşleşecektir.
2.3 şubesi ayrıca Proc#call, Socket ve IO istisna anahtar kelimelerinin kullanımı, Thread#name işleme, varsayılan pasif Net::FTP bağlantıları ve Rake'in stdlib'den kaldırılması dahil olmak üzere birçok performans iyileştirmesi, güncellemesi ve hata düzeltmesi içerir.
Yakut 2.4
Ruby 2.4.0, 2016'da Noel Günü'nde yayınlandı. Dikkate değer birkaç değişiklik şunları içeriyor:
- Binding#irb: Binding.pry'ye benzer bir REPL oturumu başlatın
- Birleştirmek Fixnum ve bignum içine Tamsayı sınıfında
- String, yalnızca ASCII'yi değil, Unicode vaka eşlemelerini de destekler
- Regexp#match'in daha hızlı bir boole versiyonu olan Regexp#match? adlı yeni bir yöntem
- İş parçacığı kilitlenme algılaması artık iş parçacıklarını geri izleme ve bağımlılıklarıyla gösteriyor
2.4 dalı ayrıca karma tablo, Dizi#maks, Dizi#min ve örnek değişken erişiminde performans iyileştirmeleri içerir.
Yakut 2.5
Ruby 2.5.0, 2017'de Noel Günü'nde piyasaya sürüldü. Birkaç dikkate değer değişiklik şunları içerir:
- kurtarma ve ifadelerin otomatik olarak çevreleyen bir do-end bloğu kullanmasını sağlayın (ek başlangıç -bitiş bloklarına daha az ihtiyaç duyulur )
- verim_self ile yöntem zincirleme
- Destek şube kapsamı ve yöntem kapsamı ölçümü
- Hash#slice ve Hash#transform_keys ile daha kolay Hash dönüşümleri
Bunun üzerine daha hızlı blok geçişi (3 kat daha hızlı), daha hızlı Mutex'ler, daha hızlı ERB şablonları ve bazı birleştirme yöntemlerinde iyileştirmeler gibi birçok performans iyileştirmesi gelir.
Yakut 2.6
Ruby 2.6.0, 2018'de Noel Günü'nde piyasaya sürüldü. Birkaç dikkate değer değişiklik şunları içerir:
- JIT (deneysel)
- RubyVM::AbstractSyntaxTree (deneysel)
Yakut 2.7
Ruby 2.7.0, 2019'da Noel Günü'nde piyasaya sürüldü. Birkaç dikkate değer değişiklik şunları içerir:
- Desen Eşleştirme (deneysel)
- REPL iyileştirme
- Sıkıştırma GC
- Konumsal ve anahtar kelime argümanlarının ayrılması
Yakut 3.0
Ruby 3.0.0, 2020'de Noel Günü'nde piyasaya sürüldü. Ruby 3x3 olarak bilinir. Ana amaçlarından biri, programları daha hızlı hale getirmek için yorumlayıcıyı Tam Zamanında Derleyiciye geçirmekti.
Sürüm tablosu
| Sürüm | En son ufacık sürüm | İlk çıkış tarihi | Destek aşamasının sonu | Güvenlik bakım aşamasının sonu |
|---|---|---|---|---|
| 1.0 | NA | 1996-12-25 | NA | NA |
| 1.8 | 1.8.7-p375 | 2003-08-04 | 2012-06 | 2014-07-01 |
| 1.9 | 1.9.3-p551 | 2007-12-25 | 2014-02-23 | 2015-02-23 |
| 2.0 | 2.0.0-p648 | 2013-02-24 | 2015-02-24 | 2016-02-24 |
| 2.1 | 2.1.10 | 2013-12-25 | 2016-03-30 | 2017-03-31 |
| 2.2 | 2.2.10 | 2014-12-25 | 2017-03-28 | 2018-03-31 |
| 2.3 | 2.3.8 | 2015-12-25 | 2018-06-20 | 2019-03-31 |
| 2.4 | 2.4.10 | 2016-12-25 | 2019-04-01 | 2020-04-01 |
| 2.5 | 2.5.9 | 2017-12-25 | 2021-04-05 | 2021-04-05 |
| 2.6 | 2.6.7 | 2018-12-25 | 2021-04-05 | 2022-04-05 |
| 2.7 | 2.7.3 | 2019-12-25 | TBA | TBA |
| 3.0 | 3.0.1 | 2020-12-25 | TBA | TBA |
|
Efsane:
Eski versiyon
Eski sürüm, hala korunuyor
En son sürüm
Gelecek sürüm
|
||||