>From the Emacs mode's perspective, that would be perfectly appropriate of
course. However, the native library module is, despite its name, not
necessarily specific to Emacs. It implements a generic protocol that any
external tool could use. It's not guaranteed that a user of the native
module wants the other behaviours triggered by the --emacs flag.

Secondly, there may be other native libraries that also may want to be
loaded as an "extension" (as opposed to a "library").

Thus, if you want to make extension loading into something that is
specified on the command line, that's perfectly fine, but I'd prefer to see
such feature be disjoint from the --emacs flag.

How about a --extension=/path/to/extension flag? (ideally, it would somehow
need to be possible to specify more than one)

Regards,
Elias


On 13 May 2014 20:21, Juergen Sauermann <juergen.sauerm...@t-online.de>wrote:

>  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>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