LINUX.ORG.RU

Динамическое расширение функционала

 , , , ,


0

3

Всем привет. Потихоньку осваиваю rust, пришла в голову идея весь сторонний (лишний для некоторых пользователей) сделать динамически подгружаемым - чтоб память не жрали неиспользуемые пользователем возможности и чтоб любой желающий мог расширить функционал программы. Меня не устраивает встраивание lua или python, если я пишу на расте - то в идеале на расте и расширять функционал. Как я себе это представляю: программа парсит из конфига название библиотеки и название класса (процедуры) и моя программа начинает использовать этот самый класс - всё скомпилировано, всё производительно. Возможно ли реализовать такое? Как скажется на производительности и пожирании памяти 50 мини-библиотек-плагинов в памяти? Стоит ли так делать? Как можно по другому реализовать идею?

Только если ты напишешь интерпретатор раста. Я бы встроил луа или свой скриптовый язык.

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

Но ведь библиотека-плагин уже скомпилирована будет, нам останется только узнать имя класса и ее местоположение - неужели нельзя значение переменной использовать как вызов класса?

vuyagohac
() автор топика

Меня не устраивает встраивание lua или python, если я пишу на расте - то в идеале на расте и расширять функционал

Ну так зачем ты тогда взял статическое говно?

nuboquest
()
Ответ на: комментарий от vuyagohac

через заранее известный интерфейс.

anonymous
()
Ответ на: комментарий от nuboquest

потому что динамическое говно медленно и жрет как не в коня.

+ проблема со всяким луашечками в том, что в них могут залезть рученки и все сломать.

Луа хорошо для расширений, но у автора, как понял, задача в другом.

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

Задача как раз в расширении, но не в ущерб скорости выпонения. Это как с кедовскими либами - не всем приложениям нужен весь фукционал раздробленной библиотеки. Я же хочу вообще под самый минимум дробить.

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

так тебе динамические либы нужны

гугл ит: rust language dynamic library

anonymous
()
Ответ на: комментарий от O02eg

ржавокодеров.

мля! 2 два раза это слово перечитал как «рукожоперов»

anonymous
()
Ответ на: комментарий от O02eg

Так, не туго ли будет системе при открытии 50 библиотек-плагинов? Если в каждой библиотеке будет до 20 строчек полезного кода. Как скажется на памяти и производительности по сравнению со всеми плагинами сразу в одной программе?

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

Почему тогда кде либы так мелко не подробили? Glib так вообще на все случаи жизни.

vuyagohac
() автор топика

За такое гомосяцкое употребление слова «функционал» надо зверски убивать.

anonymous
()
Ответ на: комментарий от nuboquest

Потому, что динамическое говно хуже. Очевидно же.

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

не туго ли будет системе при открытии 50 библиотек-плагинов

Ну, с системДы же все работает.

Как скажется на памяти и производительности по сравнению со всеми плагинами сразу в одной программе?
со всеми плагинами сразу в одной программе
сразу в одной программе

Поручик! Молчать! Не дай рандом, Леня прочитает (или коллективные измышления на тему сыс-ды вызовут возмущения в астрале, которые подсознание Лени уловит и оформит в очередной сон-(Великое)-Откровение).

anonymous
()

У меня опять бугурт

Не, ну что вы такие безграмотные?

Функциона́л — это отображение, заданное на произвольном множестве и имеющее числовую область значений: обычно множество вещественных чисел \R или комплексных чисел \mathbb{C}[1].

расширение функционала

Продолжение, ага

lisper-pipisper
()
Ответ на: комментарий от vuyagohac

Смотря что ты будешь делать в процедуре инициализации каждой. Если там блокирующих операций много или вычислений, тогда проблема. Максимум можешь многопоточности грузить. А вот если при инициализации ничего не делается, то библиотеки, готов поспорить, можно грузить тысячами. Такую голую работу не поленись сам побенчмаркать

vertexua ★★★★★
()

ты изобрел динамическую линковку

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