Regarding locked functions: I believe these came about at a time when
vendors sold not only computer time, but also software services. No doubt
this was used to hide details of a "proprietary" function from paying
customers...


On Wed, Jul 9, 2014 at 7:06 AM, Elias Mårtenson <[email protected]> wrote:

> I can't say it makes much sense in non-opensource programs either. My
> guess is that these things are more of a relic of a time when people were
> experimenting with such things. There is a reason no other languages do
> this.
>
> However, I do see a different use for "non-suspendible functions". I see
> it as functions that are guaranteed atomic. I.e. functions that modify
> global state and may actually corrupt that state if they are suspended.
> Thus, you should not be able to interrupt them, and in a multithreaded
> context you'd imagine that it had a big global mutex protecting it.
>
> Regards,
> Elias
>
>
> On 9 July 2014 21:11, Juergen Sauermann <[email protected]>
> wrote:
>
>> Hi David,
>>
>> thanks, I have changed the code so that all user-defined functions with
>> the cannot be suspended" attribute at the top of the )SI stack are pop'ed
>> before a new immediate execution context is pushed onto )SI. SVN 369.
>>
>> I hope this is what the standard wants - the information about these
>> cases is rather thin in both the ISO standard and in the APL2 manual.
>>
>> I am not always following APL2 when it comes to hiding details of errors,
>> locked
>> functions and similar because some of that does IMHO not make much sense
>> in
>> open-source programs.
>>
>> /// Jürgen
>>
>>
>>
>> On 07/08/2014 05:18 AM, David B. Lamkins wrote:
>>
>>> The ISO spec for the component file interface says: "The functions
>>> described here must be written so that they do not suspend. Any errors
>>> encountered or detected must be passed to the context from which the
>>> function was invoked."
>>>
>>> I believe that means that the function's "cannot be suspended" attribute
>>> must be set.
>>>
>>> I've arranged for each function in the component file API to have the
>>> "cannot be suspended" bit set using
>>>        0 1 0 0⎕fx ⎕cr 'function name'
>>>
>>> Errors in the functions so attributed still display the line number at
>>> which the error occurred. According to pg. 295 of the ISO spec, I should
>>> see only the function name on the state indicator.
>>>
>>>
>>>
>>>
>>
>>
>


-- 
"The secret to creativity is knowing how to hide your sources."
   Albert Einstein


http://soundcloud.com/davidlamkins
http://reverbnation.com/lamkins
http://reverbnation.com/lcw
http://lamkins-guitar.com/
http://lamkins.net/
http://successful-lisp.com/

Reply via email to