Registration Number
0826U003643, PhD dissertation
Status
Доктор філософії
Date
25-08-2026
popup.evolution
o
Title
Investigating the use of the Go runtime as a platform for developing new programming languages
Author
Pavlo P. Forkert,
popup.head Maryna H. Ivanchenko
popup.opponent Andrii M. Hubskyi
popup.opponent Maksym V. Yevlanov
popup.review Liliia M. Bozhukha
popup.review Svitlana V. Antonenko
popup.rada
Oles Honchar Dnipro National University
Description
Сучасна практика створення нових мов програмування дедалі рідше спирається на повну побудову компілятора, рантайму та інструментальної екосистеми з нуля. Натомість домінує підхід повторного використання вже наявних платформ, який дає змогу зменшити вартість реалізації мови, скоротити час експериментування з новими мовними конструкціями та швидше довести нову мову або діалект до практичного застосування. Найчастіше в такому контексті досліджуються JVM, LLVM, GraalVM та інші спеціалізовані платформи. Водночас придатність Go як основи для побудови нових мов програмування вивчена значно менше, хоча вона має важливі інженерні переваги: швидкий компілятор, зрілий рантайм, сучасний збирач сміття, підтримку кроскомпіляції, велику стандартну бібліотеку та розвинені засоби аналізу і генерації коду.
У дисертаційній роботі досліджено зручність і доцільність використання рантайму Go як платформи для побудови нових мов програмування, діалектів та предметно-орієнтованих мов через транспіляцію у звичайний Go-код. Основну увагу зосереджено на тому, які класи мовних розширень можуть бути легко і ефективно реалізовані поверх Go без модифікації офіційного компілятора, які архітектурні принципи повинен мати відповідний транспілятор, які обмеження накладає сама хост-платформа та за яких умов такий підхід є практично виправданим. Як експериментальне підтвердження запропонованого підходу розроблено діалект GoNext, який використано як демонстраційний майданчик для реалізації низки мовних розширень.
У роботі показано, що Go доцільно розглядати не як класичну багатомовну віртуальну машину і не як низькорівневий компіляторний фреймворк, а як хост-платформу особливого типу, придатну насамперед для транспільованих мов, що прагнуть зберегти сумісність із Go-екосистемою. Запропоновано систему критеріїв оцінювання такої придатності, яка охоплює виконувальні властивості, виразні можливості хост-мови, інтероперабельність, інструментальну підтримку транспіляції та вартість реалізації мовних конструкцій. Також розроблено узагальнену архітектуру транспілятора до Go та класифікацію перетворень мовних розширень на синтаксичні, структурні й репрезентаційні.
Наукова новизна дисертаційної роботи полягає в такому:
1. Вперше системно обґрунтовано доцільність розгляду рантайму Go як хост-платформи особливого типу для побудови нових мов програмування — не як багатомовної віртуальної машини і не як низькорівневого компіляторного фреймворку, а як цілі транспіляції для мов із високою інтероперабельністю з екосистемою Go.
2. Удосконалено підхід до оцінювання придатності Go як цілі транспіляції за рахунок комплексного врахування виконувальних властивостей, виразних можливостей хост-мови, інтероперабельності, інструментальної підтримки транспіляції та вартості реалізації мовних конструкцій.
3. Удосконалено архітектурний підхід до побудови мовних розширень у формі надмножини Go з поетапною трансформацією у звичайний Go-код, який поєднує нормалізацію конструкцій, частковий семантичний аналіз і перетворення у вузли go/ast, що дає змогу коректно реалізовувати конструкції, залежні від сигнатур функцій, областей видимості, контекстного відновлення типів і правил уніфікації типів Go, із збереженням двосторонньої інтероперабельності з екосистемою Go.
4. Вперше в межах єдиного транспіляційного підходу показано можливість реалізації комплексу мовних розширень поверх Go-рантайму без модифікації офіційного компілятора Go, зокрема повнофункціональних enum-типів, зіставляння із взірцем, іменованих аргументів, параметрів за замовчуванням, методів розширення, узагальнених методів, коротких анонімних функцій та універсального синтаксису виклику функцій.
Практичне значення роботи полягає в тому, що запропонований підхід дає змогу суттєво зменшити витрати на створення нових мов програмування, діалектів і предметно-орієнтованих мов за рахунок повторного використання компілятора, рантайму, системи збірки та бібліотек Go. Результати роботи можуть бути використані для проєктування нових серверних, інтеграційних, інфраструктурних і конфігураційних мов, для створення навчальних і дослідницьких транспіляторів, а також для еволюційного розширення мови Go без втрати сумісності з уже наявним кодом і бібліотеками Go. Експериментальна реалізація GoNext підтверджує практичну здійсненність запропонованих рішень і може слугувати основою для подальших досліджень та прикладних розробок.
Registration Date
2026-07-16
popup.nrat_date
2026-07-16 / 2026-09-22