TITLE

Запуск Паррота


Исполнение кода Паррота

Этот файл сжато описывает существующий на данный момент ряд исполняемых файлов и для чего они предназанчены.

parrot
Интерпретирует файл с байт-кодом Паррота:
  parrot foo.pbc

или файл с ассемблерным кодом:

  parrot foo.pasm

В последнем случае файл асемблируется во внутренний файл с байткодом и затем непосредственно выполняется. Чтобы альтернативно создать файл с байткодом на диске, используйте -o флаг:

  parrot -o foo.pbc foo.pasm

Эта команда создает файл с байткодом с именем foo.pbc, но не выполняет его.

Все аргументы командной строки после имени файл (то есть остаток argv) помещаются в SArray PMC, который передается программе в регистре P5. Например:

  parrot foo.pbc --foo_arg process_me.foo

PMC в регистре P5 будет иметь три строковый элемента: foo.pbc, --foo_arg, и process_me.foo.

parrot имеет четыре различных диспетчера кодов операций: стандартный, вычислимое goto, предразыменовывающий и JIT. По умолчанию используется стандартный диспетчер или вычислимое goto, если ваш компилятор поддерживает вычислимые переходы. Вы можете передать флаг -g parrot'у, чтобы задействовать нормальный диспетчер, даже если вы используете вычислимое goto. Предразыменовывающий диспетчер включается с помощью флага -P, JIT - с помощью -j.

Предразыменовывающий диспетчер раньше работал только как разделяемая библиотека. Это можно вернуть, если добавить #define DYNAMIC_OPLIBS в начало файла interpreter.c и затем(для большинства платформ Unix):

  make clean
  make shared
  LD_LIBRARY_PATH=blib/lib ./parrot -P foo.pbc

Вам не будут доступны цели автоматического тестирования после запуска make shared.

parrot также имеет несколько флагов для отладки и трассировки; подробное описание использования можно получить командой parrot -h.

make test
make test скомпилирует все, что необходимо и запустит полный набор стандратных регрессионных тестов, с возможностью отлаживать сборку мусора/менеджер памяти. (Отладка включается либо передачей двоичному файлу parrot флага --gc-debug, либо установкой переменной окружения PARROT_GC_DEBUG)

Чтобы просмотреть тесты более внимательно, запустите соответствующий тест в t/ каталоге:

  perl -Ilib t/op/basic.t

Чтобы избежать сохранения копий всех .pasm и .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

make quicktest
make quicktest идентично make test, за искслючением некоторых шагов, которые не являются необходимыми в большинстве случаев, что позволяет получить значительный выигрыш в скорости. Эта цель предназначена для быстрой проверки во время разработки, снижая преграды для проверки тестов. make quicktest следует выполнять перед отправкой патчей, чтобы проверить их действие.

Вместо перекомпиляции файлов .pasm в файлы .pbc, каждый раз когда выполняются тесты, make quicktest пытается увидеть идентичен ли файл .pasm тестe. И если это так, то используется сгенерированный ранее файл .pbc.

Эта опция первоначально появилась, когда assemble.pl использовался как главный асемблер Паррота, и асемблирование доминировало по времени в наборе тестов. Сейчас, из-за того что assemble.pl больше не используется, выгода от использования make quicktest стала намного меньше, и в будуем эта цель может исчезнуть.

ПРЕДУПРЕЖДЕНИЕ: make quicktest может потерпеть неудачу в следующих ситуациях:

- цель вызвана перед тем, как генерирование .pbc файлов было завершено; - формат .pbc файлов был изменен; - нумерация кодов операций, используемая в тестах была изменена; - ассемблер изменил поведение, что может сказаться на его выводе в ходе тестирования

Если make quicktest не работает, всегда можно вернуться к make test.

make quickfulltest может использоваться для прогона полного набора тестов на всех доступных диспетчерах. На самом деле это не так долго, так как гарантируется многократное использование *.pbc файлов после завершения первого прогона тестов.