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
- Co nowego w Rubym, cz. III, heise Open Source
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)


