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_relativeimport 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 |
|---|---|---|---|---|
| 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 |
|
Legenda:
Régi verzió
Régebbi verzió, még mindig karbantartva
Legújabb verzió
Jövőbeni megjelenés
|
||||