mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-26 07:33:47 +00:00
Document some restrictions for module functions.
* doc/lispref/internals.texi (Module Functions): Document some restrictions for module functions.
This commit is contained in:
parent
e1ce9f3423
commit
21c3020fce
@ -1403,6 +1403,22 @@ the function to that symbol. Note that it is possible to use
|
||||
@code{fset} instead of @code{defalias}; the differences are described
|
||||
in @ref{Defining Functions, defalias}.
|
||||
|
||||
Module functions including the @code{emacs_module_init} function
|
||||
(@pxref{module initialization function}) may only interact with Emacs
|
||||
by calling environment functions from some live @code{emacs_env}
|
||||
pointer while being called directly or indirectly from Emacs. In
|
||||
other words, if a module function wants to call Lisp functions or
|
||||
Emacs primitives, convert @code{emacs_value} objects to and from C
|
||||
datatypes (@pxref{Module Values}), or interact with Emacs in any other
|
||||
way, some call from Emacs to @code{emacs_module_init} or to a module
|
||||
function must be in the callstack. Module function may not interact
|
||||
with Emacs while garbage collection is running; @pxref{Garbage
|
||||
Collection}. They may only interact with Emacs from Lisp interpreter
|
||||
threads (including the main thread) created by Emacs; @pxref{Threads}.
|
||||
The @kbd{--module-assertions} command-line option can detect some
|
||||
violations of the above requirements. @xref{Initial Options,,,emacs,
|
||||
The GNU Emacs Manual}.
|
||||
|
||||
Using the module @acronym{API}, it is possible to define more complex
|
||||
function and data types: interactive functions, inline functions,
|
||||
macros, etc. However, the resulting C code will be cumbersome and
|
||||
|
Loading…
Reference in New Issue
Block a user