Возможно ли написать пользовательские примитивы для GNU Emacs с помощью C?

#c #emacs #elisp #primitive

#c #emacs #elisp #примитив

Вопрос:

GNU Emacs легко расширяется с помощью Emacs Lisp. В некоторых случаях вы можете столкнуться с проблемой производительности даже после байтовой компиляции. В этой ситуации было бы полезно иметь возможность писать функции C, которые вы могли бы вызывать из кода Emacs Lisp. Возможно ли это? Как вы это делаете? Есть ли пример кода?

Комментарии:

1. Не забывайте, что почти всегда возможно сделать это на C. Вы, кажется, спрашиваете: «Возможно ли это сделать?», или «Кто-то уже сделал это, и если да, то где это, чтобы я мог проверить?»

Ответ №1:

Ответ №2:

Для этого нет интерфейса, и если вы не стремились сделать что-то вроде обработки изображений / видео в emacs, я не вижу способа, которым это могло бы быть полезно. C автоматически не ускоряет работу , если только вы не можете обойти дорогостоящие структуры данных и работать с данными в их представлении. Если бы ваш код на C должен был работать со структурами данных elisp, он был бы ненамного быстрее, чем elisp, и, вероятно, был бы медленнее, чем elisp, если бы кто-нибудь когда-либо потрудился сделать среду elisp высокооптимизирующей…

Комментарии:

1. Я думаю, что оба ответа в некотором роде верны. Я был удивлен, что документация emacs на самом деле предоставляет способ сделать то, что вы хотели, но это модификация emacs , а не загрузка расширения в существующий emacs. Если вам действительно нужно это сделать, это может быть то, что вы хотите.