=head1 TITLE Запуск Паррота =head1 Исполнение кода Паррота Этот файл сжато описывает существующий на данный момент ряд исполняемых файлов и для чего они предназанчены. =over 3 =item C Интерпретирует файл с байт-кодом Паррота: parrot foo.pbc или файл с ассемблерным кодом: parrot foo.pasm В последнем случае файл асемблируется во внутренний файл с байткодом и затем непосредственно выполняется. Чтобы альтернативно создать файл с байткодом на диске, используйте C<-o> флаг: parrot -o foo.pbc foo.pasm Эта команда создает файл с байткодом с именем C, но не выполняет его. Все аргументы командной строки после имени файл (то есть остаток C) помещаются в SArray PMC, который передается программе в регистре P5. Например: parrot foo.pbc --foo_arg process_me.foo PMC в регистре P5 будет иметь три строковый элемента: C, C<--foo_arg>, и C. C имеет четыре различных диспетчера кодов операций: стандартный, вычислимое goto, предразыменовывающий и JIT. По умолчанию используется стандартный диспетчер или вычислимое goto, если ваш компилятор поддерживает вычислимые переходы. Вы можете передать флаг C<-g> C, чтобы задействовать нормальный диспетчер, даже если вы используете вычислимое goto. Предразыменовывающий диспетчер включается с помощью флага C<-P>, JIT - с помощью C<-j>. Предразыменовывающий диспетчер раньше работал только как разделяемая библиотека. Это можно вернуть, если добавить C<#define DYNAMIC_OPLIBS> в начало файла F и затем(для большинства платформ Unix): make clean make shared LD_LIBRARY_PATH=blib/lib ./parrot -P foo.pbc Вам не будут доступны цели автоматического тестирования после запуска C. C также имеет несколько флагов для отладки и трассировки; подробное описание использования можно получить командой C. =item B C скомпилирует все, что необходимо и запустит полный набор стандратных регрессионных тестов, с возможностью отлаживать сборку мусора/менеджер памяти. (Отладка включается либо передачей двоичному файлу parrot флага --gc-debug, либо установкой переменной окружения PARROT_GC_DEBUG) Чтобы просмотреть тесты более внимательно, запустите соответствующий тест в t/ каталоге: perl -Ilib t/op/basic.t Чтобы избежать сохранения копий всех C<.pasm> и C<.pbc> файлов, сгенерированных тестами, установите значение переменной окружения POSTMORTEM в 0: env POSTMORTEM=0 perl -Ilib t/op/basic.t ls t/op/basic* Чтобы запустить makefile-тесты с различными диспетчерами, установите соответствующее значение переменной TEST_PROG_ARGS: make test TEST_PROG_ARGS=-P # используется предразыменовывающий диспетчер Для запуска индивидуальных тестов, установите переменную окружения TEST_PROG_ARGS: env TEST_PROG_ARGS=-j perl -Ilib t/op/basic.t Чтобы прогнать все тесты с использованием всех имеющихся диспетчеров, воспользуйтесь целью "fulltest": make fulltest =item B C идентично make test, за искслючением некоторых шагов, которые не являются необходимыми в большинстве случаев, что позволяет получить значительный выигрыш в скорости. Эта цель предназначена для быстрой проверки во время разработки, снижая преграды для проверки тестов. C следует выполнять перед отправкой патчей, чтобы проверить их действие. Вместо перекомпиляции файлов .pasm в файлы .pbc, каждый раз когда выполняются тесты, C пытается увидеть идентичен ли файл .pasm тестe. И если это так, то используется сгенерированный ранее файл .pbc. Эта опция первоначально появилась, когда C использовался как главный асемблер Паррота, и асемблирование доминировало по времени в наборе тестов. Сейчас, из-за того что C больше не используется, выгода от использования C стала намного меньше, и в будуем эта цель может исчезнуть. ПРЕДУПРЕЖДЕНИЕ: C может потерпеть неудачу в следующих ситуациях: - цель вызвана перед тем, как генерирование .pbc файлов было завершено; - формат .pbc файлов был изменен; - нумерация кодов операций, используемая в тестах была изменена; - ассемблер изменил поведение, что может сказаться на его выводе в ходе тестирования Если C не работает, всегда можно вернуться к C. C может использоваться для прогона полного набора тестов на всех доступных диспетчерах. На самом деле это не так долго, так как гарантируется многократное использование *.pbc файлов после завершения первого прогона тестов. =back