Описание

Пример внешней компоненты для 1С:Предприятие 8 по технологии Native API на языке Rust, изначально написанный пользователем medigor, мною форкнут, т.к. мне не понравилась структура проекта и не доставало имплементации объекта соединения с базой (для отправления внешних и др.).

Данный модуль содержит только описания функции и типов, необходимых для реализации компоненты, для

Стараюсь всё реализовывать идиоматически, насколько хватает времени, желания и знаний, буду рад корректировкам :)

Размер .dll

Релизная сборка с оптимизациями на размер, примерные размеры | Использование библиотеки ureq | Без сжатия | Сжатие с помощью UPX | | ------------------------------- | ---------- | ---------------------------------------------- | | Нет | 243200 B | 115200 B | | Да | 1379328 B | 738816 B |

Поддержка платформ

Другие ресурсы

Далее сказанное изначальным автором

Преимущества по сравнению с компонентой на C++

Обзор

Компоненты по технологии Native API предполагают разработку на языке C++, т.к. компонента должна принимать и возвращать указатели на виртуальные классы C++. Компонента для windows должна собираться только компилятором msvc, а для linux и macos подойдет gcc/clang. Как известно, взаимодействие Rust с C++ из коробки не поддерживается.

Одним из вариантов было использовать cxx или подобные библиотеки. Это также бы потребовало использовать msvc.

Другой вариант - вручную реализовать виртуальные таблицы, именно этот вариант и реализован. На godbolt можно посмотреть, как выглядят виртуальные таблицы для разных компиляторов. Виртуальные таблицы msvc отличаются от gcc/clang, при этом gcc и clang используют одинаковое ABI. Виртуальные таблицы реализованы в объеме достаточном для создания компоненты.