Zamieszczone przez Yusuke Endoh 2013-02-24
Tłumaczone przez crabonature
Mamy przyjemność ogłosić wydanie Rubiego 2.0.0-p0.
Ruby 2.0.0 jest pierwszym stabilnym wydaniem serii 2.0 i zawiera wiele nowych funkcji i usprawnień, w odpowiedzi na coraz bardziej zróżnicowane i poszerzające wymagania w stosunku do Rubiego.
Przyjemnego programowania w Ruby 2.0.0!
Pobieranie
-
<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.bz2>
SIZE: 10814890 bytes MD5: 895c1c581f8d28e8b3bb02472b2ccf6a SHA256: c680d392ccc4901c32067576f5b474ee186def2fcd3fcbfa485739168093295f
-
<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz>
SIZE: 13608925 bytes MD5: 50d307c4dc9297ae59952527be4e755d SHA256: aff85ba5ceb70303cb7fb616f5db8b95ec47a8820116198d1c866cc4fff151ed
-
<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.zip>
SIZE: 15037340 bytes MD5: db5af5d6034646ad194cbdf6e50f49ee SHA256: 0d0af6a9c8788537efd8d7d2358ce9468e6e2b7703dacba9ebd064d8b7da5f99
O Ruby 2.0.0
Nowości
Niektóre z najważniejszych::
- Kluczowe funkcje języka
- Kluczowe argumenty, które dają swobodę projektowania API
Module#prepend
, które jest nowym sposobem rozszerzania klas- Literał
%i
, który ułatwia tworzenie tablicy symboli __dir__
, które zwraca nazwę katalogu pliku, który jest aktualnie przetwarzany- Domyślne kodowanie
UTF-8
, które sprawia, że wiele komentarzy służących do kodowania znaków jest niepotrzebnych
- Wbudowane biblioteki
Enumerable#lazy
iEnumerator::Lazy
, dla (możliwie nieskończonych) leniwych strumieni (lazy strings)Enumerator#size
iRange#size
, dla leniwego wyliczania rozmiaru#to_h
, które jest nową konwencją dla konwersji doHash
Onigmo
, które jest nowym silnikiem wyrażeń regularnych (klonOniguruma
)- API do asynchronicznego łapania wyjątków
- Wsparcie debugowania
- wsparcie dla
DTrace
, które umożliwia diagnostykę podczas wykonywania na produkcji TracePoint
, ulepszone API do śledzenia problemów
- wsparcie dla
- Usprawnienia wydajności
- Optymalizacja
GC
poprzez oznaczanie bitmapy (bitmap marking) - Optymalizacja
Kernel#require
, która czyni proces ładowania Rails bardzo szybkim - Optymalizacja VM w postaci przesyłania metod (method dispatch)
- Optymalizacja opracji dla
Float
- Optymalizacja
Dodatkowo eksperymentalnie 2.0.0 zawiera Refinements
,
które dodają nową koncepcję modułów Rubiego.
Zobacz także wiadomości dotyczące nowych funkcji, ulepszeń i detali.
Zgodność
Projektując 2.0.0 zadbaliśmy by był zgodny z 1.9. O wiele łatwiej będzie migrować z 1.9 do 2.0 niż to było z 1.8 do 1.9 (Niezgodności są opisane poniżej)
W rzeczywistości dzięki dedykowanej pracy osób trzecich popularne aplikacje jak Rails i tDiary działały na wersji 2.0.0.RC.
Dokumentacja
Wprowadziliśmy też sporo ulepszeń w dokumentacji, o które zabiegało wielu użytkowników Rubiego. Dodaliśmy ogromną ilość rdoc modułów i metod. 2.0.0 będzie udokumentowane w 75%, podczas gdy 1.9.3 było w około 60%. Ponadto dodaliśmy opis składni języka Ruby, co możesz zobaczyć:
Stabilność
Proszę zauważyć, że inaczej niż 1.9.0, 2.0.0 jest stabilnym wydaniem, pomimo że jego numer wersji ma 0 na końcu. Rekomendujemy wszystkim autorom bibliotek wsparcie wersji 2.0.0. Jak wspomniano powyżej będzie stosunkowo łatwo migrować z 1.9 do 2.0.
Ruby 2.0.0 jest gotowe do praktycznego użycia i zdecydowanie usprawni twoją przygodę z Ruby.
Notatki
Artykuły
Tu możesz znaleźć wstępne artykuły osób trzecich na temat Ruby 2.0.0:
- <URL:http://blog.marc-andre.ca/2013/02/23/ruby-2-by-example> (obszerny, polecany, po angielsku)
- <URL:https://speakerdeck.com/shyouhei/whats-new-in-ruby-2-dot-0> (obszerny, polecany, po angielsku)
- <URL:http://el.jibun.atmarkit.co.jp/rails/2012/11/ruby-20-8256.html> (streszczenie, po japońsku)
- <URL:https://speakerdeck.com/nagachika/rubyist-enumeratorlazy>
(tylko
Enumerator::Lazy
, po japońsku)
Poniżej także pomocne artykuły, aczkolwiek nieaktualne w tematyce Refinements
(po angielsku):
- <URL:http://rubysource.com/a-look-at-ruby-2-0/>
- <URL:https://speakerdeck.com/a_matsuda/ruby-2-dot-0-on-rails>
- <URL:http://globaldev.co.uk/2012/11/ruby-2-0-0-preview-features/>
- <URL:http://www.infoq.com/news/2012/11/ruby-20-preview1>
Ostatnie wydanie “Rubyist Magazine” zawiera artykuły napisane osobiście przez autorów funkcjonalności dla wprowadzenia do nowości w 2.0.0.
Choć napisane po japońsku to angielskie tłumaczenia są planowane w przyszłości.
Niezgodność
Jest pięć zauważalnych niezgodności, o których wiemy:
- Domyślne kodowanie skryptów Ruby obecnie to UTF-8 [#6679]. Niektóre osoby zgłaszały fakt, że ma to wpływ na ich istniejące programy, niektóre programy do badania wydajności stawały się bardzo powolne [ruby-dev:46547].
Iconv
zostało usunięte, które i tak było przestarzałe gdyM17N
zostało wprowadzone w 1.9. Zamiast używajString#encode
, itp.- Jest złamanie ABI [ruby-core:48984]. Uważamy, że zwykły użytkownik może/powinien po prostu przeinstalować biblioteki rozszerzeń. Musisz zwrócić uwagę by NIE KOPIOWAĆ PLIKÓW .so lub .bundle Z 1.9.
#lines
,#chars
,#codepoints
,#bytes
zwracają obecnieArray
zamiastEnumerator
[#6670]. Ta zmiana umożliwia uniknąć pospolitych "lines.to_a". Używaj#each_line
itp. by dostaćEnumerator
.Object#inspect
zawsze zwraca napis postaci #<ClassName:0x…> zamiast delegować do#to_s
. [#2152]
Istnieją też stosunkowo nieznaczne niezgodności. [ruby-core:49119]
Status Refinements
Dodaliśmy Refinements
, które wprowadzają nową koncepcję modułów w Ruby.
Jednakże, proszę zwrócić uwagę na to, że Refinements
są ciągle w fazie eksperymentalnej,
czyli możemy zmienić ich specyfikację w przyszłości. Pomimo tego,
chcielibyśmy abyś z nich korzystał i przekazał nam swoje spostrzeżenia i uwagi.
Twoje opinie pomogą ukształtować tą interesującą funkcjonalność.
Podziękowania
Wielu wspaniałych ludzi wzięło udział przy realizacji 2.0.0. Nawet niepełne uznanie kilku fragmentów wsparcia stało się zbyt obszerne by je tu umieścić. Przykro nam z tego powodu, z racji tego dodaję link do specjalnej strony z podziękowaniami.
Dzięki wam wszystkim!