heise open source

Wiadomości i artykuły heise Open Source

10 marca 2009, 12:28

Co nowego w Rubym 1.9.1 – wejście–wyjście, liczby, enumeratory i inne zmiany

Na łamach heise Open Source ukazała się ostatnia część serii artykułów poświęconej wydaniu 1.9.1 interpretera języka Ruby.

Programiści twierdzą, że opublikowane wydanie jest pierwszą stabilną edycją linii 1.9. Przy okazji warto podkreślić, że używany od 2003 roku Ruby 1.8 będzie dalej stosowany, a na ten rok zapowiadana jest wersja 1.8.8. Twórcy zapewniają, że nowa edycja jest nowoczesnym, szybszym językiem, a sam Yukihiro Matsumoto z kolei, że począwszy od wydania 1.9.1, interpreter pisany jest z myślą o wykorzystaniu w środowiskach produkcyjnych.

W trzeciej części artykułu opisujemy zmiany wprowadzone w mechanizmach obsługi typów wyliczeniowych i enumeratorach, a także modyfikacje klas odpowiedzialnych za operacje na liczbach i zakresach. Omówiony został też podsystem wejścia–wyjścia, czyli klasy IO, File i StringIO. Cykl zamyka sekcja poświęcona obsłudze daty i czasu oraz innym, wcześniej nieopisywanym zmianom.

Zobacz także

Spis treści

Aby ułatwić nawigację po tematach poruszanych we wszystkich trzech częściach, prezentujemy składający się z odnośników spis treści.

 Część I – Ważniejsze zmiany
  Poprawki
  Co nowego?
  Implementacja i kompatybilność
  Opcje wiersza poleceń
  Przestarzałe biblioteki i metody
    Metody klas
    Biblioteki
  Elementy wycofane i przeznaczone do wycofania
    Składnia i gramatyka
    Predefiniowane stałe i zmienne
    Metody
  Nowe i zaktualizowane biblioteki
  Ważniejsze zmiany
    Nowa top klasa
    Klasy własne i dziedziczenie
    Uproszczone wywoływanie anonimowych funkcji
    Argumenty obowiązkowe po argumentach opcjonalnych
    Unarny operator wyodrębniania
    Operator indeksowania
    Łańcuchy formatujące
    Łamanie linii przed operatorem wyboru składowej i operatorem trójkowym
    Przeciążanie operatorów negatywnych
    Ustawianie domyślnego kodowania – klasa [codeEncoding[/code]]
    Flaga [code$SAFE[/code] i dowiązywanie metod]
    Model trusted/untrusted
  Zmiany składni i semantyki
    Wyrażenia blokowe
    Zmienne lokalne i metoda [codedefined?[/code]]
    Parser interpretera wymaga podania standardu kodowania
    Nowa semantyka definicji stałej w klasowych metodach ewaluacji
  Obsługa klas, modułów i obiektów
    Moduł [codeKernel[/code] i klasa Object]
    Klasy [codeClass[/code] i Module – obsługa klas i modułów]
    Klasa [codeProc[/code] – domknięcia i bloki]
    Klasa [codeBinding[/code] – zarządzanie kontekstem]
  Wyjątki i błędy
  Procesy i wątki
    Moduł [codeProcess[/code] – obsługa procesów]
    Klasa [codeThread[/code] – obsługa wątków]
    Klasa [codeFiber[/code] – programowanie współbieżne]

 Część II – Tablice, wyrażenia regularne i łańcuchy znaków
  Tablice
  Tablice asocjacyjne
    Elementy są uporządkowane
    Dostęp do przekazanego bloku
    Nowa składnia
    Tożsamość obiektów jako klucz
    Dostęp do par obiektów
    Pozostałe zmiany
  Symbole
    Symbole o zerowej długości
    Metoda [codeintern[/code]]
  Łańcuchy znaków
    Łańcuchy nie są w pełni typem wyliczeniowym
    Rozróżnianie sposobu kodowania znaków
    Operacje atomowe
    Kodowanie znaków
    Inne nowe i zmienione metody
  Wyrażenia regularne
    Nowa biblioteka
    Klasa [codeRegexp[/code] i kodowanie znaków]
    Dopasowywanie symboli do wzorców
    Początkowa pozycja dopasowywania
    Grupy nazwane
    Klasa [codeMatchData[/code]]

 Część III – Wejście–wyjście, liczby, enumeratory i inne zmiany
  Operacje wejścia–wyjścia
    Obsługa znaków wielobajtowych
    Nieblokujące wejście–wyjście
    Moduł [codeKernel[/code] i metoda open]
    Metoda [codegetc[/code]]
    Metoda [codereadpartial[/code]]
    Metoda [codetry_convert[/code]]
    Metody [codebinread[/code] oraz binmode?]
    Metoda [codecopy_stream[/code]]
    Limity ilości danych w wielu metodach klasy [codeIO[/code]]
    Limity ilości danych w metodach klasy [codeStringIO[/code]]
    Metody [codeclose_on_exec=[/code] oraz close_on_exec?]
    Wstawianie znaków i bajtów do bufora
    Ustawianie kodowania znaków
  Operacje na plikach i katalogach
    Klasa [codeFile[/code] i ścieżka dostępu do pliku]
    Klasa [codeFile[/code] i metody world_readable? oraz world_writable?]
    Klasa [codeDir[/code] i metoda glob]
    Klasa [codeDir[/code] i metody exist? oraz exists?]
    Klasa [codeFile::Stat[/code] i metody world_readable? oraz world_writable?]
  Liczby
    Typy numeryczne
    Klasa [codeInteger[/code] – liczby całkowite]
    Klasa [codeFixnum[/code] – liczby o ustalonej precyzji]
    Klasy [codeRational[/code] i Complex – liczby wymierne i zespolone]
    Moduł [codeMath[/code] – działania matematyczne]
  Zakresy
  Typy wyliczeniowe i wyliczenia
    Wolne enumeratory
    Nowe metody wyliczeniowe
    Dodatkowe argumenty [codeeach_with_index[/code]]
  Data i czas
    Klasa [codeTime[/code] – czas]
    Klasy [codeTime[/code] i Date – czas i data]
  Inne zmiany
    Klasa [codeStruct[/code] – struktury]
    Licznik odśmiecacza
    Moduł [codeObjectSpace[/code] – przegląd przestrzeni obiektów]
    Klasy [codeMethod[/code] i Proc – obsługa metod i bloków]
    Oryginalne nazwy metod
    [codeRUBY_ENGINE[/code]]

(pwi)

  • Podziel się
  • Wykop.pl
  • StumbleUpon
  • del.icio.us
  • OSnews.pl