Wydano Ruby 2.0.0-p0

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

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 i Enumerator::Lazy, dla (możliwie nieskończonych) leniwych strumieni (lazy strings)
    • Enumerator#size i Range#size, dla leniwego wyliczania rozmiaru
    • #to_h, które jest nową konwencją dla konwersji do Hash
    • Onigmo, które jest nowym silnikiem wyrażeń regularnych (klon Oniguruma)
    • 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
  • 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

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ć:

ri ruby:syntax

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:

Poniżej także pomocne artykuły, aczkolwiek nieaktualne w tematyce Refinements (po angielsku):

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 gdy M17N zostało wprowadzone w 1.9. Zamiast używaj String#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ą obecnie Array zamiast Enumerator [#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!