• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

Автоматическая генерация типобезопасных интерфейсов на C++/WebAssembly из интерфейсов TypeScript

ФИО студента: Суворов Егор Федорович

Руководитель: Брыксин Тимофей Александрович

Кампус/факультет: Санкт-Петербургская школа физико-математических и компьютерных наук

Программа: Анализ больших данных в бизнесе, экономике и обществе (Магистратура)

Год защиты: 2020

В настоящее время активно развиваются веб-приложения, позволяющие запускать программы на любых устройствах, имеющих веб-браузер. Программные интерфейсы в веб в первую очередь предназначены для языка программирования JavaScript. Имеющиеся решения для разработки веб-приложений на языке программирования C++ (Emscripten, Cheerp) не позволяют автоматически и точно проверять корректность вызовов сложных JavaScript-интерфейсов из программ на C++ на этапе компиляции. В работе представлена система для упрощения разработки веб-приложений на C++, основанная на проекте Emscripten, позволяющем компилировать программы на C++ в байт-код виртуальной машины WebAssembly. Система состоит из двух частей: (а) вспомогательной библиотеки, позволяющей описывать на языке C++ типы JavaScript-сущностей и вызывать их методы с проверкой типов на этапе компиляции; и (б) автоматического генератора заголовочных файлов C++ с описанием произвольных JavaScript-интерфейсов из существующего описания на языке программирования TypeScript. Вспомогательная библиотека позволяет эмулировать систему типов языка TypeScript при помощи шаблонного метапрограммирования на языке C++. Автоматический генератор позволяет переиспользовать уже написанные в рамках проекта DefinitelyTyped описания JavaScript-библиотек для языка TypeScript, что существенно упрощает интеграцию приложений на C++ в экосистему веб-приложений. Разработанная система позволяет C++-приложениям прозрачно взаимодействовать с произвольными JavaScript-библиотеками, имеющих описание программного интерфейса на популярном языке TypeScript. Для компиляции языка C++ в WebAssembly используется стандартный компилятор Clang, что позволяет использовать последние стандарты языка C++ и любые дополнительные библиотеки. Реализация системы опубликована на сайте github.com/think-cell/tcjs. Созданное решение покрыто автоматическими тестами и успешно использована при разработке тестового веб-приложения на C++, использующего HTML DOM API. Ключевые слова: emscripten, webassembly, javascript, typescript, c++, интерфейс внешних функций

Выпускные квалификационные работы (ВКР) в НИУ ВШЭ выполняют все студенты в соответствии с университетским Положением и Правилами, определенными каждой образовательной программой.

Аннотации всех ВКР в обязательном порядке публикуются в свободном доступе на корпоративном портале НИУ ВШЭ.

Полный текст ВКР размещается в свободном доступе на портале НИУ ВШЭ только при наличии согласия студента – автора (правообладателя) работы либо, в случае выполнения работы коллективом студентов, при наличии согласия всех соавторов (правообладателей) работы. ВКР после размещения на портале НИУ ВШЭ приобретает статус электронной публикации.

ВКР являются объектами авторских прав, на их использование распространяются ограничения, предусмотренные законодательством Российской Федерации об интеллектуальной собственности.

В случае использования ВКР, в том числе путем цитирования, указание имени автора и источника заимствования обязательно.

Реестр дипломов НИУ ВШЭ