Интерпретируемая стандартная библиотека - PullRequest
0 голосов
/ 26 февраля 2011

Обычно язык программирования поставляется со стандартной библиотекой, реализованной хотя бы частично в самом языке.

В случае интерпретируемого языка очевидной реализацией является чтение исходных файлов библиотеки при запуске интерпретатора, но это наталкивается на грязную, но постоянную проблему обеспечения того, чтобы интерпретатор знал, где найти эти файлы, даже когда оба перемещаются. Было бы чище, если бы они могли быть встроены в сам интерпретатор, поэтому существует только один исполняемый файл.

Я могу увидеть простой способ сделать это, просто переведя исходные файлы библиотеки в строковые литералы C, но мне любопытно, есть ли какие-либо подводные камни, которые я пропускаю, или уточнения метода.

Итак, мой вопрос в том, какие существующие интерпретируемые языки прикрепляют исходные файлы библиотеки на самом языке к интерпретатору?

1 Ответ

2 голосов
/ 27 февраля 2011

Виртуальные машины с байт-кодом часто дают ответ на этот вопрос: сохраняйте байт-код в файлах (* .pyc, * .rbc) и загружайте версии библиотек с байт-кодом, используя более простой механизм.

Smalltalks делают это, сбрасывая стандартную кучу в отдельный файл, называемый «образом».

Что касается распределения по одному файлу, добавьте файл (ы) библиотеки в конец исполняемого файла и включите специальную логику для интерпретатора, чтобы он считывал из своего двоичного файла и находил структуру этих интерпретируемых данных программы или альтернативно собирал интерпретатор со статическим включением данных программы.

...