Poprawki
Wyeliminowano siedem usterek występujących jeszcze w wersji Release Candidate i kilka programistycznych niedociągnięć:
- usunięto błąd polegający na zawieszaniu pracy interpretera przy próbie wykonania
autoloadna nieistniejącej klasie, - zlikwidowano pojawiające się w Windows XP usterki związane z zapisem do standardowego wyjścia,
- uporządkowano zależności bibliotek, usuwając katalogi związane z niekompatybilnym już kompilatorem bcc32,
- zdiagnozowano przyczynę nieudanych kompilacji interpretera w dystrybucji GNU/Linuksa SUSE,
- poradzono sobie z problemem tworzenia przez RubyGems katalogów poza
DESTDIR, - wprowadzono poprawki w procesie kompilacji i instalacji, gdy używany jest kompilator mingw,
- poprawiono obsługę kodowania CP936,
- naprawiono obsługę biblioteki zlib w komponencie RubyGems pracującym w systemach Windows.
Co nowego?
Linia rozwojowa 1.9 zawiera przede wszystkim nowe konstrukcje składniowe i semantyczne, jak również modyfikacje pod względem wbudowanych klas i obiektów. Zestawienie wszystkich zmian zainteresowani znajdą w pliku News znajdującym się na stronie projektu, my natomiast postaramy się je opisać.
Implementacja i kompatybilność
Nowy interpreter języka Ruby nie współpracuje już z systemem Mac OS 9 i wcześniejszymi, Windows CE i VMS-em. Nie da się go również skompilować, używając narzędzi djgpp, bcc32 i human68k.
W wydaniu 1.9 zamiast MRI (Matz Ruby Interpreter) użyto maszyny wirtualnej YARV (Yet Another Ruby Vm). W efekcie interpreter lepiej zarządza pamięcią, a ogólna prędkość wykonywania się programów została zwiększona od 2 do 4 razy. Zmiany w implementacji obejmują też kompaktowanie obiektów należących do klas Object, Array, String, Hash, Struct, Class i Module.
Opcje wiersza poleceń
Dodano opcję -E (--encoding) pozwalającą ustawić kodowanie znaków używane w programie. Poza tym, za sprawą włączenia do projektu RubyGems pojawiła się możliwość włączania lub wyłączania obsługi tego modułu za pomocą --enable-gems i --disable-gems. Ważne, aby pamiętać, że dwie wspomniane powyżej opcje dotyczą konkretnego pliku z kodem. Jeśli podajemy wiele plików, to przed nazwą każdego należy ustawić odpowiedni przełącznik.
Istnieją także przełączniki --enable-rubyopt i --disable-rubyopt – działają one tak samo, ale dla wszystkich wczytywanych źródeł na raz. Można również skorzystać ze zmiennej środowiskowej RUBYOPT i w niej ustawić odpowiednie opcje.
Poza tym w nowym interpreterze znajdziemy też opcję -U, dzięki której łatwo ustawia się domyślne wewnętrzne kodowanie znaków na UTF-8.



