GNU bug report logs -
#30373
Support finalizers for functions created in dynamic modules
Previous Next
Reported by: Samir Jindel <sjindel <at> google.com>
Date: Tue, 6 Feb 2018 21:26:01 UTC
Severity: wishlist
Done: Philipp Stephani <p.stephani2 <at> gmail.com>
Bug is archived. No further changes may be made.
Full log
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Hi,
I'm very excited by the possibilities opened through the new dynamic module
interface, "emacs-module.h".
However, I have a concern about the API for creating Lisp functions bound
to native functions:
```c
emacs_value (*make_function) (emacs_env *env,
ptrdiff_t min_arity,
ptrdiff_t max_arity,
emacs_value (*function) (emacs_env *env,
ptrdiff_t nargs,
emacs_value args[],
void *)
EMACS_NOEXCEPT,
const char *documentation,
void *data);
```
I presume the "data" pointer here is provided to enable native functions to
work like closures,
carrying additional, possibly dynamically allocated data. However, this
functionality is limited by
the absence of a finalization function pointer, like the "user_ptr" values
have:
```c
emacs_value (*make_user_ptr) (emacs_env *env,
void (*fin) (void *) EMACS_NOEXCEPT,
void *ptr);
```
Without the ability to provide a finalizer, a module can only safely make
the "data" pointer to
"make_function" point to static memory.
Thanks,
Samir Jindel
[Message part 2 (text/html, inline)]
This bug report was last modified 5 years and 139 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.