unofficial mirror of guile-user@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: <a95cgd$446$2@main.gmane.org> (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-user mailing list
Guile-user@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-user


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

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-04-12  1:06 Thien-Thi Nguyen [this message]
     [not found] <E16vpWV-0001wJ-00@giblet>
2002-04-13  8:50 ` [d.love@dl.ac.uk: dynamic loading of native code modules] Neil Jerram
2002-04-14  0:34 ` Rob Browning
     [not found] ` <878z7rqfrg.fsf@raven.i.defaultvalue.org>
2002-04-14  2:55   ` Rob Browning
2002-04-24  0:24   ` Thien-Thi Nguyen
     [not found]   ` <E170AaI-00070x-00@giblet>
2002-04-24  5:25     ` Rob Browning
     [not found]     ` <87znztllbx.fsf@raven.i.defaultvalue.org>
2002-05-14 10:57       ` Thien-Thi Nguyen
     [not found]       ` <E177a03-0000H2-00@giblet>
2002-05-14 16:11         ` Bill Gribble
     [not found]         ` <1021392674.802.71.camel@flophouse>
2002-05-14 20:54           ` Thien-Thi Nguyen
     [not found] ` <m3n0w8ugmp.fsf@laruns.ossau.uklinux.net>
2002-04-14  0:58   ` Rob Browning
2002-04-14 21:30   ` Marius Vollmer
     [not found]   ` <874rifqeo8.fsf@raven.i.defaultvalue.org>
2002-04-14 22:22     ` Neil Jerram
     [not found]     ` <m3bsclsyxn.fsf@laruns.ossau.uklinux.net>
2002-04-15  4:21       ` Rob Browning
2002-04-15 12:15       ` Marius Vollmer
     [not found]       ` <87lmbpiocf.fsf@raven.i.defaultvalue.org>
2002-04-16 20:23         ` Neil Jerram
     [not found]         ` <m3sn5vpf43.fsf@laruns.ossau.uklinux.net>
2002-04-17  5:25           ` Rob Browning
2002-04-20  8:14           ` Thien-Thi Nguyen
     [not found]           ` <E16yq0k-0003ji-00@giblet>
2002-04-20 11:07             ` Neil Jerram
     [not found]       ` <873cxxkvj8.fsf@zagadka.ping.de>
2002-04-16 20:24         ` Neil Jerram
     [not found]         ` <m3n0w3pf1n.fsf@laruns.ossau.uklinux.net>
2002-04-17  0:53           ` NIIBE Yutaka
2002-04-17  5:36           ` Rob Browning
     [not found]           ` <874riahonj.fsf@raven.i.defaultvalue.org>
2002-04-17  5:43             ` Rob Browning
2002-04-20  7:53             ` Thien-Thi Nguyen
     [not found]             ` <E16ypgs-0003jQ-00@giblet>
2002-04-21 15:20               ` Rob Browning
     [not found]               ` <87ofgdqdr9.fsf@raven.i.defaultvalue.org>
2002-04-21 15:51                 ` Robert A. Uhl
     [not found]                 ` <20020421095106.A31437@4dv.net>
2002-04-21 16:27                   ` Rob Browning
2002-05-14  8:53                 ` Thien-Thi Nguyen
2002-04-23 21:19             ` news
     [not found]           ` <200204170053.g3H0rX008200@mule.m17n.org>
2002-04-20  7:57             ` Thien-Thi Nguyen
2002-04-20  9:06   ` Thien-Thi Nguyen
     [not found]   ` <E16yqp7-0003n6-00@giblet>
     [not found]     ` <m3elhasjez.fsf@laruns.ossau.uklinux.net>
2002-04-20 12:44       ` Thien-Thi Nguyen
2002-04-24  0:09   ` Thien-Thi Nguyen
     [not found]   ` <87ads6nf1v.fsf@zagadka.ping.de>
2002-04-15 17:58     ` Andreas Rottmann
     [not found]     ` <87it6s7sjz.fsf@alice.rhinosaur.lan>
2002-04-15 19:06       ` Marius Vollmer
2002-04-24  8:00       ` Thien-Thi Nguyen
     [not found]       ` <E170Hh6-0007Y8-00@giblet>
2002-04-24 14:33         ` Rob Browning
     [not found]         ` <87662hkvya.fsf@raven.i.defaultvalue.org>
2002-04-24 14:51           ` rm
     [not found]           ` <20020424145130.GC17392@www>
2002-04-24 15:14             ` Andreas Rottmann
2002-04-24 15:28             ` Rob Browning
     [not found]             ` <87y9fd5dsj.fsf@alice.rhinosaur.lan>
2002-04-24 15:48               ` Rob Browning
     [not found]               ` <87vgahjdwc.fsf@raven.i.defaultvalue.org>
2002-04-24 16:15                 ` Bill Gribble
2002-04-24 18:06                 ` Andreas Rottmann
     [not found]                 ` <1019664949.936.80.camel@flophouse>
2002-04-24 16:24                   ` Rob Browning
2002-04-24 18:10                   ` Andreas Rottmann
     [not found]                   ` <87ofg955n8.fsf@alice.rhinosaur.lan>
2002-04-24 20:36                     ` Rob Browning
2002-04-25  2:05                       ` Joshua Judson Rosen
     [not found]                       ` <20020425020550.GL29646@linger.twisted-muse.org>
2002-04-25  3:03                         ` Rob Browning
     [not found]                 ` <87sn5l55us.fsf@alice.rhinosaur.lan>
2002-04-24 20:40                   ` Rob Browning
     [not found]                   ` <87sn5khlub.fsf@raven.i.defaultvalue.org>
2002-04-24 20:53                     ` Andreas Rottmann
     [not found]                     ` <0204291926190H.10649@locke.free-expression.org>
2002-04-30  1:35                       ` Thien-Thi Nguyen
     [not found]                       ` <E172MY6-0002fd-00@giblet>
2002-04-30  2:33                         ` Lynn Winebarger
2002-05-04  0:19                           ` Thien-Thi Nguyen
     [not found]             ` <871yd5ktf5.fsf@raven.i.defaultvalue.org>
2002-05-15  0:19               ` Thien-Thi Nguyen
2002-04-24 18:34           ` Thien-Thi Nguyen
     [not found]           ` <E170Rb4-0008B0-00@giblet>
2002-04-24 18:58             ` Rob Browning
     [not found]             ` <873cxkj54j.fsf@raven.i.defaultvalue.org>
2002-04-25  5:32               ` Thien-Thi Nguyen
2002-05-01  5:00           ` Lynn Winebarger
     [not found]           ` <0205010000300Q.10649@locke.free-expression.org>
2002-05-01 13:50             ` Rob Browning
2002-04-24  0:52     ` 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='a95cgd$446$2@main.gmane.org' \
    --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).