Шитый код
Bell J. R. Threaded code //Communications of the ACM. – 1973. – Т. 16. – №. 6. – С. 370-372.
Tratt L. Fast Enough VMs in Fast Enough Time
Подробное введение в (мета-)трассирующую JIT-компиляцию на примере PyPy + RPython. Разбираются (упрощённые) примеры построения и оптимизации трасс, строится "мост" к практическому использованию PyPy для реализации собственной языковой ВМ с JIT-компиляцией.
Most modern languages are implemented using Virtual Machines (VMs). While the best VMs use Just-In-Time (JIT) compilers to achieve good performance, JITs are costly to implement, and few VMs therefore come with one. The RPython language allows tracing JIT VMs to be automatically created from an interpreter, changing the economics of VM implementation. In this paper, we explain, through two concrete VMs, how meta-tracing RPython VMs can be designed and optimised, and, experimentally, the performance levels one might reasonably expect from them.
Статья является отличным кратким введением в практическое использование фреймворка Truffle для тех, кто уже знает как производить парсинг исходного кода, построение и непосредственную интерпретацию AST (ещё полезно знать про inline caches). Даются примеры и произвдится сравнение скорости нескольких интерпретаторов промышленных динамических языков программирования: JavaScript, Ruby и R.
The Garbage Collection Handbook: The Art of Automatic Memory Management (Web version)
Веб-сайт, посвящённый вопросам управления памятью — как ручного, так и автоматического. Содержит
- глоссарий
- вводные статьи
- список литературы
- ответы на частые вопросы
Статьи дают краткое представление о проблематике управления памятью от железа через операционную систему к уровню приложения. Упоминают базовые техники аллокации и рекламации памяти (трассировка, подсчёт ссылок). Кратко описывают подходы к управлению памятью в языках программирования, как распространённых, так и исторических. В основном ссылаются на соответствующие разделы глоссария.
Сайт можно рекомендавать в качестве обзорного введения в тематику сборки мусора и как обширный справочный материал.
Forth
Smalltalk
Smalltalk-80: The Language and its Implementation; Adele Goldberg and DavidRobson
Prolog
Lisp
Pascal
Lua
Standard ML
Appel A. W. A runtime system //Lisp and Symbolic Computation. – 1990. – Т. 3. – №. 4. – С. 343-380.
Машинный код в системах с раздельной компиляцией
Книга раскрывает цель и ключевые особенности статического и динамического связывания, которые обычно пропускаются в теоретических курсах.
В статье рассказываются практические особенности процесса связывания с точки зрения информатики (Theoretical Computer Science). Объясняются особенности терминологии (link-speak), используемой в документации и работах, посвящённых редакторам связей.