Historie Ruby - History of Ruby
Toto je historie programovacího jazyka Ruby .
Početí
Matsumoto řekl, že Ruby byla koncipována v roce 1993. V příspěvku z roku 1999 do konference Ruby-Talk popisuje některé ze svých raných představ o jazyce:
Mluvil jsem s kolegou o možnosti objektově orientovaného skriptovacího jazyka. Znal jsem Perl (Perl4, ne Perl5), ale moc se mi to nelíbilo, protože to vonělo jazykem hraček (stále má). Objektově orientovaný jazyk vypadal velmi slibně. Tehdy jsem znal Python . Ale nelíbilo se mi to, protože jsem si nemyslel, že by to byl skutečný objektově orientovaný jazyk-funkce OO se zdály být doplňkem jazyka. Jako 15letý jazykový maniak a fanoušek OO jsem opravdu chtěl skutečný objektově orientovaný a snadno použitelný skriptovací jazyk. Hledal jsem, ale nenašel. Tak jsem se rozhodl to zvládnout.
Matsumoto popisuje design Ruby jako jádra jednoduchého jazyka Lisp s objektovým systémem jako Smalltalk, bloky inspirovanými funkcemi vyššího řádu a praktickými nástroji, jako je Perl.
Název „Ruby“ vznikl během online chatu mezi Matsumoto a Keiju Ishitsuka 24. února 1993, než byl pro daný jazyk napsán jakýkoli kód. Původně byla navržena dvě jména: „ Coral “ a „ Ruby “. Matsumoto si vybral to druhé v pozdějším e-mailu Ishitsuce. Matsumoto později zaznamenal faktor při výběru jména „Ruby“ - to byl kámen narození jednoho z jeho kolegů.
První publikace
První veřejné vydání Ruby 0,95 bylo oznámeno na japonských domácích diskusních skupinách 21. prosince 1995. Následně byly během dvou dnů vydány další tři verze Ruby. Vydání se shodovalo se spuštěním seznamu adresátů ruby-list v japonském jazyce , což byl první seznam adresátů pro nový jazyk.
V této fázi vývoje již bylo přítomno mnoho funkcí známých v pozdějších verzích Ruby, včetně objektově orientovaného designu, tříd s dědičností, mixinů , iterátorů , uzávěrů , zpracování výjimek a shromažďování odpadků .
Časná vydání
Po vydání Ruby 0,95 v roce 1995 bylo v následujících letech vydáno několik stabilních verzí Ruby:
- Ruby 1.0: 25. prosince 1996
- Ruby 1.2: prosinec 1998
- Ruby 1.4: srpen 1999
- Ruby 1.6: září 2000
V roce 1997 byl na webu publikován první článek o Ruby. Ve stejném roce byl Matsumoto najat společností netlab.jp, aby pracoval na Ruby jako vývojář na plný úvazek.
V roce 1998 spustil Matsumoto archiv aplikací Ruby spolu s jednoduchou domovskou stránkou Ruby v angličtině.
V roce 1999 začal první anglicky psaný seznam ruby-talk , který signalizoval rostoucí zájem o jazyk mimo Japonsko. Ve stejném roce Matsumoto a Keiju Ishitsuka napsali první knihu o Ruby, Objektově orientovaný skriptovací jazyk Ruby (オ ブ ジ ェ ク ト 指向 ス ク リ プ ト 言語 Ruby), která byla vydána v Japonsku v říjnu 1999. Na začátku roku 2000 by byla následována přibližně 20 knih o Ruby vydaných v japonštině.
Do roku 2000 byl Ruby v Japonsku populárnější než Python. V září 2000 byla vytištěna první kniha v angličtině Programming Ruby , která byla později volně vydána veřejnosti, což dále rozšířilo přijetí Ruby mezi anglicky mluvícími. Na začátku roku 2002 dostával seznam adresátů ruby-talk v angličtině více zpráv než seznam ruby v japonštině , což demonstrovalo rostoucí popularitu Ruby v nejaponsky mluvícím světě.
Ruby 1.8
Ruby 1.8 byl původně vydán v srpnu 2003, byl dlouhodobě stabilní a byl vyřazen z provozu v červnu 2013. Ačkoli je zastaralý, stále existuje kód na jeho základě. Ruby 1.8 je pouze částečně kompatibilní s Ruby 1.9.
Ruby 1.8 byl předmětem několika průmyslových standardů. Jazykové specifikace pro Ruby byly vyvinuty Střediskem propagace otevřených standardů Agentury pro podporu informačních technologií ( japonská vládní agentura) k předložení Japonskému výboru pro průmyslové standardy (JISC) a poté Mezinárodní organizaci pro normalizaci (ISO). Byl přijat jako japonský průmyslový standard (JIS X 3017) v roce 2011 a mezinárodní standard ( ISO/IEC 30170 ) v roce 2012.
Kolem roku 2005 vzrostl zájem o jazyk Ruby společně s Ruby on Rails , webovým frameworkem napsaným v Ruby. Rails se často připisuje zvyšování povědomí o Ruby.
Ruby 1.9
Ruby 1.9 byl vydán na Štědrý den v roce 2007. S platností od Ruby 1.9.3, vydané 31. října 2011, Ruby přešlo z dvojí licence na základě licence Ruby a GPL na dvojí licenci na základě licence Ruby a dvou klauzule licence BSD. Přijetí 1.9 bylo zpomaleno změnami od 1.8, které vyžadovaly přepsání mnoha populárních drahokamů třetích stran .
Ruby 1.9 přináší řadu významných změn oproti řadě 1.8. Mezi příklady patří:
- blokovat lokální proměnné (proměnné, které jsou lokální pro blok, ve kterém jsou deklarovány)
- další syntaxe lambda :
f = ->(a,b) { puts a + b } - další syntaxe Hash doslovného použití dvojteček pro symboly klíče:
{symbol_key: "value"} == {:symbol_key => "value"} - Podporováno je kódování znaků na řetězec
- nové API soketu ( podpora IPv6 )
-
require_relativezabezpečení importu
Ruby 1.9 je od 23. února 2015 zastaralý a již nebude přijímat opravy chyb a zabezpečení. Uživatelům doporučujeme upgradovat na novější verzi.
Ruby 2.0
Ruby 2.0 přidal několik nových funkcí, včetně:
- argumenty klíčových slov metody,
- nová metoda
Module#prependpro rozšíření třídy, - nový doslov pro vytváření řady symbolů,
- nové API pro líné hodnocení Enumerables a
- nová konvence použití #to_h k převodu objektů na hash.
Ruby 2.0 měl být plně zpětně kompatibilní s Ruby 1.9.3. K oficiálnímu vydání 2.0.0 24. února 2013 existovalo pouze pět známých (menších) nekompatibilit.
Ruby 2.0 je od 24. února 2016 zastaralý a již nebude přijímat opravy chyb a zabezpečení. Uživatelům doporučujeme upgradovat na novější verzi.
Ruby 2.1
Ruby 2.1.0 byla vydána na Štědrý den v roce 2013. Tato verze obsahuje zrychlení, opravy chyb a aktualizace knihovny.
Počínaje verzí 2.1.0 se zásady správy verzí Ruby podobají sémantickému vytváření verzí . I když jsou podobné, zásady správy verzí Ruby nejsou kompatibilní se sémantickým verzováním:
| Rubín | Sémantické verzování |
|---|---|
| MAJOR : Zvýší se v případě nekompatibilní změny, kterou nelze uvolnit v MINOR. Rezervováno pro speciální akce. | HLAVNÍ : Zvýší se, když provedete nekompatibilní změny API. |
| MINOR : zvyšuje se každé Vánoce, může být nekompatibilní s API. | MINOR : zvyšuje se, když přidáváte funkce zpětně kompatibilním způsobem. |
| TEENY : zabezpečení nebo oprava chyb, která udržuje kompatibilitu API. Může být zvýšen o více než 10 (například 2.1.11) a bude vydáván každé 2–3 měsíce. | PATCH : zvyšuje se, když provádíte zpětně kompatibilní opravy chyb. |
| PATCH : počet potvrzení od posledního vydání MINOR (bude resetováno na 0 při uvolnění MINOR). | - |
Sémantické verzování také poskytuje další popisky pro předběžná vydání a metadata sestavení jsou k dispozici jako rozšíření formátu MAJOR.MINOR.PATCH, není k dispozici na Ruby.
Ruby 2.1 je od 1. dubna 2017 zastaralý a již nebude přijímat opravy chyb a zabezpečení. Uživatelům doporučujeme upgradovat na novější verzi.
Ruby 2.2
Ruby 2.2.0 byl vydán na Štědrý den v roce 2014. Toto vydání obsahuje zrychlení, opravy chyb a aktualizace knihovny a odstraňuje některá zastaralá rozhraní API. Nejpozoruhodnější je, že Ruby 2.2.0 zavádí změny ve zpracování paměti - přírůstkový sběrač odpadků, podpora pro sběr odpadků symbolů a možnost kompilovat přímo proti jemalloc. Obsahuje také experimentální podporu pro použití vfork (2) se systémy () a spawn () a přidanou podporu pro specifikaci Unicode 7.0.
Mezi zastaralé nebo odstraněné funkce patří callcc, knihovna DL, Digest :: HMAC, lib/rational.rb, lib/complex.rb, GServer, Logger :: Application a také různé funkce C API.
Ruby 2.2 je od 1. dubna 2018 zastaralý a již nebude přijímat opravy chyb a zabezpečení. Uživatelům doporučujeme upgradovat na novější verzi.
- Výkon PowerPC64
- Od verze 2.2.1 byl výkon Ruby MRI na PowerPC64 vylepšen.
Ruby 2.3
Ruby 2.3.0 byl vydán na Štědrý den v roce 2015. Mezi několik pozoruhodných změn patří:
- Možnost označit všechny řetězcové literály jako zmrazené ve výchozím nastavení s následně velkým zvýšením výkonu v řetězcových operacích.
- Porovnání hashování umožňuje přímou kontrolu párů klíč/hodnota místo pouze klíčů.
- Nový bezpečný navigační operátor,
&.který může usnadnit nulové ovládání (např. Místo toho můžeme použít ).if obj && obj.foo && obj.foo.barif obj&.foo&.bar - Did_you_mean klenot je nyní dodáván standardně a požadované při startu automaticky navrhnout podobným názvem utkání na NameError nebo NoMethodError .
-
Hash#dig a Array#dig pro snadné extrahování hluboce vnořených hodnot (např. Vzhledem k tomu , že hodnotu Foo Baz lze nyní načíst pomocí ).
profile = { social: { wikipedia: { name: 'Foo Baz' } } }profile.dig(:social, :wikipedia, :name) -
.grep_v(regexp)který bude kromě jiných nových funkcí odpovídat všem negativním příkladům daného regulárního výrazu.
Větev 2.3 také obsahuje mnoho vylepšení výkonu, aktualizace a opravy chyb, včetně změn volání Proc#, použití soketů a vstupů a výstupů výjimek klíčových slov, zpracování názvu vlákna#, výchozí pasivní připojení Net :: FTP a odebrání Rake ze stdlib.
Ruby 2.4
Ruby 2.4.0 byl vydán na Štědrý den v roce 2016. Mezi několik pozoruhodných změn patří:
- Vazba#irb: Spusťte relaci REPL podobně jako binding.pry
- Sjednotit Fixnum a Bignum do Integer třídu
- Řetězec podporuje mapování případů Unicode, nejen ASCII
- Nová metoda, Regexp#match ?, která je rychlejší booleovskou verzí Regexp#match
- Detekce zablokování vláken nyní zobrazuje vlákna s jejich backtrace a závislostí
Větev 2.4 také obsahuje vylepšení výkonu hashovací tabulky, pole#max, pole#min a přístupu k proměnné instance.
Ruby 2.5
Ruby 2.5.0 byl vydán na Štědrý den v roce 2017. Mezi několik pozoruhodných změn patří:
- zachránit a zajistit, aby příkazy automaticky používaly okolní blok konce (menší potřeba dalších bloků konce začátku )
- Řetězení metod s yield_self
- Podpora pokrytí větví a měření pokrytí metod
- Jednodušší transformace hash s hash#slice a hash#transform_keys
Kromě toho přichází řada vylepšení výkonu, jako je rychlejší předávání bloků (3krát rychlejší), rychlejší Mutexy, rychlejší šablony ERB a vylepšení některých metod zřetězení.
Ruby 2.6
Ruby 2.6.0 byl vydán na Štědrý den v roce 2018. Mezi několik pozoruhodných změn patří:
- JIT (experimentální)
- RubyVM :: AbstractSyntaxTree (experimentální)
Ruby 2.7
Ruby 2.7.0 byl vydán na Štědrý den v roce 2019. Mezi několik pozoruhodných změn patří:
- Pattern Matching (experimentální)
- Vylepšení REPL
- Zhutnění GC
- Oddělení argumentů pozičních a klíčových slov
Ruby 3.0
Ruby 3.0.0 byl vydán na Štědrý den v roce 2020. Je známý jako Ruby 3x3. Jedním z jeho hlavních cílů bylo přepnout tlumočníka na kompilátor Just-In-Time, aby byly programy rychlejší.
Tabulka verzí
| Verze | Nejnovější verze pro malé děti | Datum prvního vydání | Konec fáze podpory | Konec fáze údržby zabezpečení |
|---|---|---|---|---|
| 1,0 | NA | 1996-12-25 | NA | NA |
| 1,8 | 1.8.7-p375 | 2003-08-04 | 2012-06 | 01.04.2014 |
| 1.9 | 1.9.3-p551 | 2007-12-25 | 23. dubna 2014 | 23. 2. 2015 |
| 2.0 | 2.0.0-p648 | 24. února 2013 | 24. února 2015 | 24. února 2016 |
| 2.1 | 2.1.10 | 25. 12. 2013 | 30. března 2016 | 2017-03-31 |
| 2.2 | 2.2.10 | 25. 12. 2014 | 28. 3. 2017 | 2018-03-31 |
| 2.3 | 2.3.8 | 25. 12. 2015 | 2018-06-20 | 2019-03-31 |
| 2.4 | 2.4.10 | 2016-12-25 | 2019-04-01 | 01. 2020 |
| 2.5 | 2.5.9 | 25. 12. 2017 | 2021-04-05 | 2021-04-05 |
| 2.6 | 2.6.7 | 25. 12. 2018 | 2021-04-05 | 2022-04-05 |
| 2.7 | 2.7.3 | 25. 12. 2019 | TBA | TBA |
| 3,0 | 3.0.1 | 25. 12. 2020 | TBA | TBA |
|
Legenda:
Stará verze
Starší verze, stále udržovaná
Nejnovější verze
Budoucí vydání
|
||||