Hi Elias,

wouldn't it then be easier for the user to load the emacs lib when --emacs is given?

BTW we could make --emacs an entry in the preferences file so that the user does not
need to give it on the command line every time.

/// Jürgen


On 05/11/2014 03:12 AM, Elias Mårtenson wrote:
Indeed it would fine to load it via a command, and it's perfectly acceptable to not be able to call it from APL. The Emacs library has very few requirements.

So, perhaps we should have two different types of native libraries? We could call them "native library" (with the existing semantics), and the other being, hmm… let's call it "extension".

Native libraries would then introduce a normal APL function and be subject to the usual lifecycle of any other function symbol.

Extensions would add one or more ]COMMAND's and not be affected by the symbols lifecycle.

I don't really see any need to even have the ability to unload an extension, so if that's complicated to implement it can be ignored.

Regards,
Elias


On 11 May 2014 00:33, Juergen Sauermann <juergen.sauerm...@t-online.de <mailto:juergen.sauerm...@t-online.de>> wrote:

    Hi Elias,

    I see. So when would you like to load the shared lib? We could do
    it by )COMMAND or by a --command-line-option.
    Sounds like you want it rather early, even before APL's immediate
    execution loop starts. That would be a
    --command-line-option then. We could keep the rest (function names
    in libraries etc.) and just separate the
    native function object. There would still be a native function
    object as such, but you don't see it in APL and you
    can't delete it either. *Of course you also can't call it from APL
    then**.**
    *
    /// Jürgen



    On 05/10/2014 05:47 PM, Elias Mårtenson wrote:
    First of all, sorry about the benchmark numbers. I thought I
    already sent them but I see now that I had forgotten about it.
    I'll do it tomorrow.

    About the libraries, I see what you are saying. Having a library
    ID is definitely one way of dealing with this (I suppose the
    package manager can be used to pull it in if it's missing on the
    system).

    However, the Emacs mode is different. A non-emacs user would not
    want to (and shouldn't) have the library loaded. Likewise, if I
    load a dump from someone who is not using Emacs, I don't want to
    lose the Emacs mode that I already loaded.

    I think that the Emacs mode native library and others, such as
    the SQL one, are fundamentally different in the sense that the
    former attaches to the runtime session and never interacts with
    the programs the user writes, while the other is a "normal"
    library used by a specific program that only differs from a
    normal APL program by the language the library is written in.

    The library ID system is definitely a good thing for the latter
    type of native library.

    However, I believe a separate model is needed for the former
    type. In fact, the Emacs mode library doesn't even need a
    function entry point. I can imagine other libraries of the same
    type, though none as obvious as the editor integration stuff.

    The former type need to load, stay in a single session, and never
    interact with the user in any visible way. This includes being
    included in a dump file. Even seeing the native entry point in
    the output of )FNS can be confusing, and I would really like to
    be able to avoid that one.

    Regards,
    Elias






Reply via email to