LINUX.ORG.RU

dylib в расте

 


0

3

Господа растоманы, подскажите пожалуйста как организовать систему плагинов. Хочу динамически подгружаемые плагины к приложеньке. Я знаю, что можно сделать либу через crate-type="cdylib", а потом загрузить ее в приложение чем libloading. Но cdylib требует, что бы экспортируемые функции работали с C примитивами. Т.е. Box указатель на какую-нибудь структуру или даже String нормально не прокинуть. Раст вроде как умеет в crate-type="dylib" который как раз таки нативное ABI, а не сишное. Но я нигде не могу найти инструкции, как правильно dylib подгружать. Мб вы знаете?

★★★★★

Насколько я помню, это одна из нерешенных проблем раста. Стандарта на ABI нет и в ближайшее время не будет.

P.S. Обазаться C-шными интерфейсами и через него вытащить указатель на trait - тоже не очень хорошая идея. Как минимум, версии компилятора и стандартной бибилиотеки для плагина и для приложения должны совпадать. Возможно какие-то флаги компиляции - тоже.

P.P.S. Последний раз я в эту сторону смотрел года 2 назад, может быть что-то уже и поменялось.

trex6 ★★★★★
()
Последнее исправление: trex6 (всего исправлений: 2)
Ответ на: комментарий от trex6

Все правильно сказал. ABI нету, кроме через «С». Ну или какой-то кроссплатформенный формат в массиве байт. Кроме широкоизвестных YAML, JSON, Proto, Thrift можно еще глянуть на zero-cost Cap’n’Proto

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

Я вообще хотел подключать плагин к приложеньке. Когда приложение само в себя ходит с JSON или brotobuf это определенно over-engineering.

Aswed ★★★★★
() автор топика
Ответ на: комментарий от Aswed

Когда плагины пишет сообщество, то оно может начать их делать на чем угодно, на других ЯП.

Почитай архитектуру i3wm например.

Все зависит от обьемов передаваемой информации

vertexua ★★★★★
()
Ответ на: комментарий от dotcoder

WASM? Я думал это штука для браузеров. А можно какую-нибудь ссылку на туториал?

Aswed ★★★★★
() автор топика
7 апреля 2022 г.
Ответ на: комментарий от O02eg

Спасибо за ссылку. Правда я уже смирился и делаю все через стандартный dylib и сишные типы.

Aswed ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.