unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: Thien-Thi Nguyen <ttn@giblet.glug.org>
Cc: guile-user@gnu.org
Subject: [d.love@dl.ac.uk: dynamic loading of native code modules]
Date: Thu, 11 Apr 2002 18:06:43 -0700	[thread overview]
Message-ID: <E16vpWV-0001wJ-00@giblet> (raw)

   From: Dave Love <d.love@dl.ac.uk>
   Subject: dynamic loading of native code modules
   Date: 10 Apr 2002 23:22:27 +0100
   To: gnu-emacs-sources@gnu.org
   
   This patch for Emacs 21.1 basically extends `load' to allow loading
   compiled C modules and provides a script to build them.  See also the
   attached README.
   
   [...]
   
   * Features
   
   These changes add the ability to dynamically load modules coded in C,
   like the Emacs interpreter core using Libtool facilities.  This works
   just by extending `load' to accept file names with extension `.la'
   which describe Libtool-built modules.  These are found on `load-path',
   like Lisp files, taking precedence over Lisp of the same base name if
   an extension isn't specified.  They work with `require' (if the module
   provides a feature) and `eval-after-load' (should that ever be
   useful).  They can't be loaded from remote filesystems.  There is a
   feature test `dynamic-modules-p' added for the facility, but I'm not
   sure that's actually useful.  Modules can only be loaded once and
   cannot be unloaded; it may be possible to remove these constraints.
   The script `build-emacs-module' cans the Libtool and doc-snarfing
   steps for building modules from source.
   
   XEmacs has a rather more complicated native code module system.  I'm
   not sure the complication is necessary, and it doesn't build on
   libtool.  (Bill Perry, who did the original XEmacs implementation,
   agrees that using Libtool is the right thing.)
    
   [...]

guile-1.4 supports extending module name semantics to allow mapping also
to .so in addition to .scm files (albeit low level uses dyn* directly --
could use update (patches welcome)).  1.6 does not at the moment (it was
removed).  grep "dyn" reveals 1537 hits since 2000-01.  anyone have
specific pointers for removal rationale?  where is that refbot?

it is possible to provide support again in `resolve-interface', but this
support should not be put in boot-9.scm.  instead, resolve-interface
ought to add a user hook somewhere, or be tunable in some other way.
this allows users to customize their concept of "interface" in a
well-defined environment (entirely :-) suited for such customization.
instantiable modules can be supported, etc.

in parallel w/ this change is of course revival of (use-modules FOO)
possibly resolving to .../libfoo.so.x.y.z, using the above hook and the
modern load-extension interface.  the previous mapping proc needs
rationalization and some design to keep weird use-cases in check.

another runner in the race is replacing lowest levels of the module
system w/ environments, using the above hook (or similar internal hook)
for implementation.  getting load-extension and environments together,
basically.

these all are branches that can be pursued relatively independently
after discussion yields a design.  in the end, they are all part of
defining the execution model, if i understand that term correctly, and
moving things to "user space" is what it's all about (slack!).

alternatively, we need to document *why* 1.6 chooses to rob the users
so, at least to ourselves.  "This has been found to be too tricky, and
is no longer supported" is, although not dis-honest, still pretty lame.

thi

_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-devel


             reply	other threads:[~2002-04-12  1:06 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-04-12  1:06 Thien-Thi Nguyen [this message]
2002-04-13  8:50 ` [d.love@dl.ac.uk: dynamic loading of native code modules] Neil Jerram
2002-04-14  0:58   ` Rob Browning
2002-04-14 22:22     ` Neil Jerram
2002-04-15  4:21       ` Rob Browning
2002-04-16 20:23         ` Neil Jerram
2002-04-17  5:25           ` Rob Browning
2002-04-20  8:14           ` Thien-Thi Nguyen
2002-04-20 11:07             ` Neil Jerram
2002-04-15 12:15       ` Marius Vollmer
2002-04-16 20:24         ` Neil Jerram
2002-04-17  0:53           ` NIIBE Yutaka
2002-04-20  7:57             ` Thien-Thi Nguyen
2002-04-17  5:36           ` Rob Browning
2002-04-17  5:43             ` Rob Browning
2002-04-20  7:53             ` Thien-Thi Nguyen
2002-04-21 15:20               ` Rob Browning
2002-04-21 15:51                 ` Robert A. Uhl
2002-04-21 16:27                   ` Rob Browning
2002-05-14  8:53                 ` Thien-Thi Nguyen
2002-04-14 21:30   ` Marius Vollmer
2002-04-15 17:58     ` Andreas Rottmann
2002-04-15 19:06       ` Marius Vollmer
2002-04-24  8:00       ` Thien-Thi Nguyen
2002-04-24 14:33         ` Rob Browning
2002-04-24 14:51           ` rm
2002-04-24 15:14             ` Andreas Rottmann
2002-04-24 15:48               ` Rob Browning
2002-04-24 16:15                 ` Bill Gribble
2002-04-24 16:24                   ` Rob Browning
2002-04-24 18:10                   ` Andreas Rottmann
2002-04-24 20:36                     ` Rob Browning
     [not found]                     ` <87wuuwhm08.fsf@raven.i.defaultvalue.org>
2002-04-25  2:05                       ` Joshua Judson Rosen
2002-04-25  3:03                         ` Rob Browning
2002-04-24 18:06                 ` Andreas Rottmann
2002-04-24 20:40                   ` Rob Browning
2002-04-24 20:53                     ` Andreas Rottmann
2002-04-30  0:26                     ` Lynn Winebarger
2002-04-30  1:35                       ` Thien-Thi Nguyen
2002-04-30  2:33                         ` Lynn Winebarger
     [not found]                         ` <0204292133140I.10649@locke.free-expression.org>
2002-05-04  0:19                           ` Thien-Thi Nguyen
2002-04-30  0:20                 ` Lynn Winebarger
2002-04-24 15:28             ` Rob Browning
2002-05-15  0:19               ` Thien-Thi Nguyen
2002-04-24 18:34           ` Thien-Thi Nguyen
2002-04-24 18:58             ` Rob Browning
2002-04-25  5:32               ` Thien-Thi Nguyen
2002-05-01  5:00           ` Lynn Winebarger
2002-05-01 13:50             ` Rob Browning
2002-04-24  0:52     ` Thien-Thi Nguyen
2002-04-20  9:06   ` Thien-Thi Nguyen
2002-04-20 12:21     ` Neil Jerram
2002-04-20 12:44       ` Thien-Thi Nguyen
2002-04-24  0:09   ` Thien-Thi Nguyen
2002-04-14  0:34 ` Rob Browning
2002-04-14  2:55   ` Rob Browning
2002-04-24  0:24   ` Thien-Thi Nguyen
2002-04-24  5:25     ` Rob Browning
2002-04-24 21:18       ` Marius Vollmer
2002-04-25  4:10         ` Thien-Thi Nguyen
2002-04-28 15:32           ` Marius Vollmer
2002-04-28 20:19             ` Thien-Thi Nguyen
2002-05-14 10:57       ` Thien-Thi Nguyen
2002-05-14 16:11         ` Bill Gribble
2002-05-14 20:54           ` Thien-Thi Nguyen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=E16vpWV-0001wJ-00@giblet \
    --to=ttn@giblet.glug.org \
    --cc=guile-user@gnu.org \
    --cc=ttn@glug.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).