Etap zapisu - Rubinius
Author: Less Than Three. <3. http://less.thanthree.com
Description: Rubinius is an implementation of the Ruby programming language. The Rubinius bytecode virtual machine is written in C++. The bytecode compiler is written in pure Ruby. The vast majority of the core library is also written in Ruby, with some supporting primitives that interact with the VM directly.

1.2.3

## Etap zapisu

Gdy zakończył się etap pakowania i utworzony został obiekt CompiledMethod, Rubinius zapisuje tą metodą do pliku w celu późniejszego użycia. Na przykład, po tym jak pierwszy raz ładujemy plik, następne ładowanie nie będzie ładować już kodu Ruby i wykonywać wszystkich poprzednich etapów tylko ładuje CompiledMethod bezpośrednio z pliku.

Etap zapisu jest bardzo prosty. Polega on na dodaniu do nazwy pliku z kodem źródłowym przyrostka `c` oraz wywołaniu Rubinius::CompiledFile.dump z obiektem CompiledMethod z poprzedniego etapu jako argumentem oraz nazwą pliku do którego nastąpi zapis.

Kiedy zapisywanie się zakończy etap ten zwraca to co dostał na wejściu na wyjście (czyli CompiledMethod). CompiledMethod jest wartością zwracaną gdy cały etap kompilacji się skończy.

## Pliki

- lib/compiler/compiled_file.rb: implementacja CompiledFile. do zapisu wywoływana jest metoda `CompiledFile.dump`.

## Dostosowanie zapisu

Tak właściwie ten etap (zapisu) jest opcjonalny, wykonywany tylko wtedy gdy kompilowany jest plik. Kiedy kompilowany jest String, (np. przy pomocy eval), ten etap jest pomijany. W takim wypadku kompilator zatrzymuje się na etapie pakowania i zwraca CompiledMethod.

Dzięki architekturze Rubiniusa łatwo jest dodać inne etapy na końcu procesu kompilacji i jeśli tylko te etapy zwrócą podaną na wejściu (lub zmienioną) CompiledMethod wszystko będzie działać tak jak powinno.

Aby dowiedzieć się więcej o dostosowywaniu poszczególnych etapów kompilacji do swoich potrzeb przeczytaj Modyfikacja procesu kompilacji.