Ruby története - History of Ruby

Ez a Ruby programozási nyelv története .

Fogalom

Matsumoto elmondta, hogy a Ruby-t 1993-ban foganták meg. A rubin-talk levelezőlistán 1999-ben megjelent bejegyzésében leírja néhány korábbi elképzelését a nyelvről:

Beszéltem a kollégámmal az objektum-orientált szkriptnyelv lehetőségéről. Tudtam, Perl (Perl4 nem Perl5), de nem tettem, mintha tényleg, mert ez volt a szaga a játék nyelvi (akkor még). A tárgyközpontú nyelv nagyon ígéretesnek tűnt. Akkor már ismertem Python -t . De nem tetszett, mert nem gondoltam, hogy ez egy valódi objektum-orientált nyelv-az OO funkciók úgy tűntek, hogy kiegészítik a nyelvet. Nyelvmániásként és OO rajongóként 15 éve nagyon szerettem volna egy valódi objektum-orientált, könnyen használható szkriptnyelvet. Kerestem, de nem találtam egyet. Úgyhogy úgy döntöttem, hogy sikerül.

Matsumoto úgy írja le a Ruby tervezését, mint egy egyszerű Lisp- nyelvet a lényegében, olyan objektumrendszerrel, mint a Smalltalk, a magasabb rendű funkciók által inspirált blokkokkal és olyan gyakorlati hasznossággal, mint a Perl.

A "Ruby" név egy Matsumoto és Keiju Ishitsuka közötti online csevegés során keletkezett 1993. február 24 -én, mielőtt bármilyen kódot írtak volna a nyelvhez. Kezdetben két nevet javasoltak: " Coral " és " Ruby ". Matsumoto az utóbbit választotta egy későbbi Ishitsuka e-mailben. Matsumoto később megjegyezte a Ruby név kiválasztásának egyik tényezőjét - ez volt egyik kollégájának születési köve .

Első publikáció

A Ruby 0.95 első nyilvános kiadását 1995. december 21 -én jelentették be a japán hazai hírcsoportokban . Ezt követően két nap alatt megjelent a Ruby további három változata. A megjelenés egybeesett a japán nyelvű rubinlistás levelezőlista elindításával , amely az új nyelv első levelezőlistája volt.

A fejlesztésnek ebben a szakaszában már jelen voltak a Ruby későbbi kiadásaiban ismert tulajdonságok, köztük az objektum-orientált tervezés, az öröklődéssel rendelkező osztályok , a mixinek , az iterátorok , a lezárások , a kivételkezelés és a szemétszedés .

Korai kiadások

A Ruby 0.95 1995 -ös megjelenését követően a Ruby számos stabil verziója jelent meg a következő években:

  • Rubin 1.0: 1996. december 25
  • Rubin 1.2: 1998. december
  • Rubin 1.4: 1999. augusztus
  • Rubin 1.6: 2000. szeptember

1997 -ben megjelent az első cikk Ruby -ról a weben. Ugyanebben az évben Matsumotót a netlab.jp bérelte fel, hogy teljes munkaidős fejlesztőként dolgozzon Ruby-n.

1998-ban a Matsumoto elindította a Ruby alkalmazásarchívumot, valamint egy egyszerű angol nyelvű honlapot a Ruby számára.

1999 -ben megkezdődött az első angol nyelvű levelezőlista rubin-talk , amely Japánon kívül növekvő érdeklődést jelzett a nyelv iránt. Ugyanebben az évben Matsumoto és Keiju Ishitsuka írták az első könyvet a Ruby-ról, Az objektum-orientált szkriptnyelv Ruby (オ ブ ジ ェ ク ト 指向 ス ク リ プ 言語 Ruby), amelyet 1999 októberében adtak ki Japánban . A 2000-es évek elején kb. 20 könyv Rubyról japánul.

2000 -re a Ruby népszerűbb volt, mint a japán Python. 2000 szeptemberében kinyomtatták az első angol nyelvű Programming Ruby könyvet , amelyet később szabadon bocsátottak a nyilvánosság elé, tovább szélesítve a Ruby elfogadását az angolul beszélők körében. 2002 elején az angol nyelvű rubin-talk levelezőlistára több üzenet érkezett, mint a japán nyelvű rubinlistára , ami azt mutatja, hogy Ruby egyre népszerűbb a nem japán nyelvű világban.

Rubin 1.8

A Ruby 1.8 -at eredetileg 2003 augusztusában adták ki, hosszú ideig stabil volt, és 2013 júniusában visszavonult. Bár elavult, még mindig létezik kód alapján. A Ruby 1.8 csak részben kompatibilis a Ruby 1.9 verzióval.

A Ruby 1.8 számos ipari szabvány tárgyát képezte. A Ruby nyelvi specifikációit az Informatikai Promóciós Ügynökség ( Japán kormányhivatal ) Nyílt Szabványok Promóciós Központja dolgozta ki a Japán Ipari Szabványügyi Bizottsághoz (JISC), majd a Nemzetközi Szabványügyi Szervezethez (ISO) történő benyújtásra . Japán ipari szabványként (JIS X 3017) 2011 -ben, nemzetközi szabványként ( ISO/IEC 30170 ) 2012 -ben fogadták el .

2005 körül a Ruby -nyelv iránti érdeklődés párhuzamosan megnőtt a Ruby on Rails nevű webes keretrendszerrel , amely Ruby -ban íródott. A Rails -t gyakran elismerik a Ruby iránti fokozott tudatossággal.

Rubin 1.9

A Ruby 1.9-et 2007 karácsonyán adták ki . A 2011. október 31-én megjelent Ruby 1.9.3 verzióval Ruby a Ruby License és a GPL kettős licencről a Ruby License és a két- záradék BSD licenc. Az 1,9 elfogadását lelassították az 1,8 -ról való változások, amelyek miatt sok népszerű harmadik féltől származó drágakövet kellett átírni.

A Ruby 1.9 számos jelentős változást vezet be az 1.8 -as sorozathoz képest. Például:

  • blokkolja a helyi változókat (azok a változók, amelyek lokálisak ahhoz a blokkhoz , amelyben deklarálták őket)
  • további lambda szintaxis:f = ->(a,b) { puts a + b }
  • egy további Hash szó szerinti szintaxis, kettőspontot használva a szimbólumkulcsokhoz:{symbol_key: "value"} == {:symbol_key => "value"}
  • per-húr karakterkódolásokat támogatott
  • új socket API ( IPv6 támogatás)
  • require_relative import biztonság

A Ruby 1.9 2015. február 23. óta elavult, és már nem kap hibajavításokat és biztonsági javításokat. A felhasználóknak javasoljuk, hogy frissítsenek egy újabb verzióra.

Rubin 2.0

A Ruby 2.0 számos új funkciót adott hozzá, többek között:

  • metódus kulcsszó argumentumok,
  • egy új módszer Module#prependaz osztály bővítésére,
  • új literál szimbólumok létrehozására,
  • új API a felsorolások lusta értékeléséhez , és
  • egy új konvenció a #to_h használatával az objektumok hashá alakítására.

A Ruby 2.0 -t teljesen visszafelé kompatibilisnek tervezték a Ruby 1.9.3 -mal. A 2013. február 24 -i hivatalos 2.0.0 kiadás óta csak öt ismert (kisebb) összeférhetetlenség volt.

A Ruby 2.0 2016. február 24. óta elavult, és már nem kap hibajavításokat és biztonsági javításokat. A felhasználóknak javasoljuk, hogy frissítsenek egy újabb verzióra.

Rubin 2.1

A Ruby 2.1.0 2013 karácsonyán jelent meg. A kiadás gyorsításokat, hibajavításokat és könyvtári frissítéseket tartalmaz.

A 2.1.0 -tól kezdve a Ruby verziószámítási házirendje inkább a szemantikus verzióhoz hasonlít . Bár hasonló, a Ruby verziószámítási házirendje nem kompatibilis a szemantikus verzióval:

Rubin Szemantikai változat
MAJOR : Növekszik, ha nem kompatibilis módosítás, amelyet nem lehet MINOR -ban kiadni. Különleges eseményekre fenntartva. FŐBB : Növekszik, ha inkompatibilis API -módosításokat hajt végre.
MINOR : nőtt minden karácsonykor, lehet API kompatibilis. MINOR : fokozódik, ha a funkciókat visszafelé kompatibilis módon adja hozzá .
TEENY : biztonsági vagy hibajavítás, amely fenntartja az API -kompatibilitást. 10 -nél többre növelhető (például a 2.1.11), és 2-3 havonta jelenik meg. PATCH : növelve, ha visszafelé kompatibilis hibajavításokat végez.
PATCH : a legutóbbi MINOR kiadás óta tett kötelezettségvállalások száma (a MINOR elengedésekor 0 -ra áll vissza). -

A szemantikai verziózás további címkéket is biztosít a kiadás előtti kiadáshoz, és a build metaadatok a MAJOR.MINOR.PATCH formátum kiterjesztéseként érhetők el, nem érhetők el a Ruby-nál.

A Ruby 2.1 2017. április 1. óta elavult, és már nem kap hibajavításokat és biztonsági javításokat. A felhasználóknak javasoljuk, hogy frissítsenek egy újabb verzióra.

Rubin 2.2

A Ruby 2.2.0 2014 karácsonyán jelent meg. A kiadás gyorsításokat, hibajavításokat és könyvtári frissítéseket tartalmaz, és eltávolít néhány elavult API-t. A Ruby 2.2.0 a memóriakezelés változásait vezeti be - növekvő szemétszedőt, a szimbólumok szemétszedésének támogatását és a jemalloc elleni közvetlen fordítás lehetőségét. Kísérleti támogatást is tartalmaz a vfork (2) használatához a rendszerrel () és a spawn (), valamint további támogatást nyújt a Unicode 7.0 specifikációhoz.

Az elavult vagy eltávolított szolgáltatások közé tartozik a callcc, a DL könyvtár, a Digest :: HMAC, lib/rational.rb, lib/complex.rb, GServer, Logger :: Application, valamint a különböző C API funkciók.

A Ruby 2.2 2018. április 1. óta elavult, és már nem kap hibajavításokat és biztonsági javításokat. A felhasználóknak javasoljuk, hogy frissítsenek egy újabb verzióra.

PowerPC64 teljesítmény
A 2.2.1 verzió óta javult a PowerPC64 Ruby MRI teljesítménye .

Rubin 2.3

A Ruby 2.3.0 2015 karácsonyán jelent meg. Néhány figyelemre méltó változás:

  • Az a képesség, hogy az összes karakterliteralistát alapértelmezés szerint befagyottként jelölje meg, következésképpen nagymértékben megnövelve a karakterlánc -műveleteket.
  • Hash összehasonlítás lehetővé teszi a kulcs/érték párok közvetlen ellenőrzését a kulcsok helyett.
  • Egy új biztonságos navigációs operátor &. , amely megkönnyíti a nulla kezelést (pl. Helyett használhatjuk ).if obj && obj.foo && obj.foo.barif obj&.foo&.bar
  • A did_you_mean drágakő alapértelmezés szerint csomagban van, és indításkor szükséges ahhoz, hogy a NameError vagy NoMethodError azonos nevű egyezéseket automatikusan javasolja .
  • Hash#dig és Array#dig a mélyen egymásba ágyazott értékek könnyű kinyeréséhez (pl. Adott , a Foo Baz érték most lekérhető ).profile = { social: { wikipedia: { name: 'Foo Baz' } } }profile.dig(:social, :wikipedia, :name)
  • .grep_v(regexp) amely megfelel az adott reguláris kifejezés összes negatív példájának más új funkciók mellett.

A 2.3 ág számos teljesítményfejlesztést, frissítést és hibajavítást is tartalmaz, beleértve a Proc#hívás módosítását, a Socket és az IO kivételes kulcsszavak használatát, a szál#név kezelését, az alapértelmezett passzív Net :: FTP kapcsolatokat és a Rake eltávolítását az stdlib -ből.

Rubin 2.4

A Ruby 2.4.0 2016 karácsonyán jelent meg. Néhány figyelemre méltó változás:

  • Binding#irb: Indítsa el a REPL munkamenetet a bind.pry -hez hasonlóan
  • Unify Fixnum és Bignum be Egész osztály
  • A karakterlánc támogatja az Unicode -esetleképezést, nem csak az ASCII -t
  • Egy új módszer, a Regexp#match ?, amely a Regexp#match gyorsabb logikai változata
  • A szálak holtpontjának észlelése mostantól a szálakat mutatja visszafelé és függőségükkel

A 2.4 ág a hash tábla, a tömb#max, a tömb#perc és a példányváltozó -hozzáférés teljesítményének javítását is tartalmazza.

Rubin 2.5

A Ruby 2.5.0 2017 karácsonyán jelent meg. Néhány figyelemre méltó változás:

  • menteni és biztosítani, hogy a kijelentések automatikusan használják a környező befejező blokkot (kevesebb extra kezdő- és befejező blokk szükséges)
  • Módszer-láncolás hozam_ önnel
  • Támogatja az ágazati lefedettséget és a módszer lefedettség mérését
  • Egyszerűbb Hash átalakítások a Hash#szelet és a Hash#transform_keys segítségével

Ezenkívül számos teljesítményjavítás érhető el, mint például a gyorsabb blokkátadás (háromszor gyorsabb), gyorsabb Mutex -ek, gyorsabb ERB -sablonok és egyes összefűzési módszerek fejlesztései.

Rubin 2.6

A Ruby 2.6.0 2018 karácsonyán jelent meg. Néhány figyelemre méltó változás:

  • JIT (kísérleti)
  • RubyVM :: AbstractSyntaxTree (kísérleti)

Rubin 2.7

A Ruby 2.7.0 -t 2019 karácsonyán adták ki. Néhány figyelemre méltó változás:

  • Mintaegyezés (kísérleti)
  • A REPL javítása
  • Tömörítési GC
  • Pozíciós és kulcsszó -argumentumok szétválasztása

Rubin 3.0

A Ruby 3.0.0 2020 karácsonyán jelent meg. Ruby 3x3 néven ismert. Az egyik fő célja az volt, hogy a tolmácsot Just-In-Time Compiler-re cserélje, hogy a programok gyorsabbak legyenek.

Változatok táblázata

Változat Legújabb kicsi verzió Az első megjelenési dátum A támogatási szakasz vége A biztonsági karbantartási szakasz vége
Régi, már nem karbantartott verzió: 1.0 NA 1996-12-25 NA NA
Régi, már nem karbantartott verzió: 1.8 1.8.7-p375 2003-08-04 2012-06 2014-07-01
Régi, már nem karbantartott verzió: 1.9 1.9.3-p551 2007-12-25 2014-02-23 2015-02-23
Régi, már nem karbantartott verzió: 2.0 2.0.0-p648 2013-02-24 2015-02-24 2016-02-24
Régi, már nem karbantartott verzió: 2.1 2.1.10 2013-12-25 2016-03-30 2017-03-31
Régi, már nem karbantartott verzió: 2.2 2.2.10 2014-12-25 2017-03-28 2018-03-31
Régi, már nem karbantartott verzió: 2.3 2.3.8 2015-12-25 2018-06-20 2019-03-31
Régi, már nem karbantartott verzió: 2.4 2.4.10 2016-12-25 2019-04-01 2020-04-01
Régi, már nem karbantartott verzió: 2.5 2.5.9 2017-12-25 2021-04-05 2021-04-05
Régebbi verzió, még mindig karbantartva: 2.6 2.6.7 2018-12-25 2021-04-05 2022-04-05
Régebbi verzió, még mindig karbantartva: 2.7 2.7.3 2019-12-25 TBA TBA
Jelenlegi stabil verzió: 3.0 3.0.1 2020-12-25 TBA TBA
Legenda:
Régi verzió
Régebbi verzió, még mindig karbantartva
Legújabb verzió
A legújabb előzetes verzió
Jövőbeni megjelenés

Hivatkozások