[M3devel] RC merge

Tony Hosking hosking at cs.purdue.edu
Sat Sep 12 13:38:43 CEST 2009


But in this case the caller is highly privileged code that is already  
UNSAFE, so who cares?

On 11 Sep 2009, at 23:37, jay.krell at cornell.edu wrote:

> I don't like the caller to have to cast.
>
>  - Jay (phone)
>
> On Sep 11, 2009, at 7:19 PM, Tony Hosking <hosking at cs.purdue.edu>  
> wrote:
>
>> Yes, that was exactly my intention.  I wasn't quite sure what your  
>> problem was with the code I had returning ADDRESS, but was willing  
>> to accede.  It is "safe", but you can't use the result unless in  
>> UNSAFE code.
>>
>> Antony Hosking | Associate Professor | Computer Science | Purdue  
>> University
>> 305 N. University Street | West Lafayette | IN 47907 | USA
>> Office +1 765 494 6001 | Mobile +1 765 427 5484
>>
>>
>>
>>
>> On 11 Sep 2009, at 17:33, Jay K wrote:
>>
>>> ps: I think there's another funny thing here:
>>> I think you can have:
>>>
>>> INTERFACE FooInterface;
>>>
>>> PROCEDURE SafeFunction();
>>> PROCEDURE UnsafeFunction()=ADDRESS;
>>>
>>> END FooInterface.
>>>
>>> Despite being in a safe interface, UnsafeFunction either can't be  
>>> called
>>> from safe code, or at least its return value can't be used? Or at  
>>> least
>>> can't be done anything with but compare to NIL?
>>> I think.
>>> Therefore this interface could be said to be "partially unsafe".
>>>
>>> Perhaps not a useful middle ground though.
>>>
>>>  - Jay
>>>
>>> From: jay.krell at cornell.edu
>>> To: hosking at cs.purdue.edu
>>> CC: m3devel at elegosoft.com
>>> Subject: RE: [M3devel] RC merge
>>> Date: Fri, 11 Sep 2009 21:26:00 +0000
>>>
>>> Yes and no. I agree I made a small mess. I'm not sure you have  
>>> quite described how it should be.
>>>
>>> I propose a few options:
>>>  1 - asis, probably not
>>>  2 - rename/merge ThreadUnsafe to ThreadInternal
>>>  3 - move the part that external folks use, probably just MyId, to  
>>> Thread, and then move ThreadUnsafe back to ThreadF, maybe  
>>> ThreadInternal to ThreadF too
>>>
>>> 2 at least removes one interface that I added, reducing the three  
>>> similar ThreadF, ThreadUnsafe, ThreadInternal, to just two,  
>>> ThreadF and ThreadInternal
>>>
>>> 3 maybe gratuitously breaks folks but is a clean result
>>>
>>>  4 - like you said, make all ThreadF users unsafe; but IF it is  
>>> just MyId, and I'm not sure it is, which seems harmless, right?  
>>> seems wrong to make them unsafe.
>>>
>>>  - Jay
>>>
>>> From: hosking at cs.purdue.edu
>>> To: jay.krell at cornell.edu
>>> Date: Fri, 11 Sep 2009 16:51:11 -0400
>>> CC: m3devel at elegosoft.com
>>> Subject: Re: [M3devel] RC merge
>>>
>>> Sorry, it looks like my commit failed last night because of need  
>>> to merge with your ThreadUnsafe stuff.
>>>
>>> FYI, we really should think about making ThreadF UNSAFE since  
>>> anyone invoking on it is exposed to dangerous parts of the run- 
>>> time system.  Is there any need for it really to be safe?
>>>
>>> On 11 Sep 2009, at 16:05, Jay K wrote:
>>>
>>> Tony I'll double check if I see the hang. NT386 still crashes.
>>>
>>> http://www.modula3.com/cm3/ChangeLog-2009
>>>
>>> "
>>> 2009-09-08 05:54 hosking
>>>
>>>   * m3-libs/m3core/src/: convert/CConvert.m3,
>>>     runtime/common/RTAllocator.m3, runtime/common/RTCollector.m3,
>>>     runtime/common/RTCollectorSRC.i3, runtime/common/RTHeapInfo.m3,
>>>     runtime/common/RTHeapRep.i3, runtime/common/RTHeapRep.m3,
>>>     runtime/common/RTHeapStats.m3, runtime/common/RTLinker.m3,
>>>     runtime/common/RTOS.i3, runtime/ex_frame/RTExFrame.m3,
>>>     runtime/ex_stack/RTExStack.m3, thread/POSIX/ThreadF.i3,
>>>     thread/POSIX/ThreadPosix.m3, thread/PTHREAD/ThreadF.i3,
>>>     thread/PTHREAD/ThreadPThread.m3, thread/WIN32/ThreadF.i3,
>>>     thread/WIN32/ThreadWin32.m3:
>>>
>>>   Tidy up use of thread.inCritical to only occur in allocation  
>>> sequences and in
>>>   thread stoppage.  This simplifies reasoning.  Refactored use of  
>>> heap lock
>>>   in the process.  This may be better implemented on PTHREAD  
>>> targets using a
>>>   recursive pthread mutex instead of one we roll ourselves from a  
>>> non-recursive
>>>   mutex.
>>>
>>>   Still witnessing random hangs in Juno and mentor on I386_DARWIN.
>>>   Strange, I thought this was working previously.
>>>   I wonder if there is some sort of race in the GUI code somewhere?
>>> "
>>>
>>> ??
>>> -  Jay
>>>
>>>
>>> From: hosking at cs.purdue.edu
>>> To: jay.krell at cornell.edu
>>> Date: Fri, 11 Sep 2009 12:46:19 -0400
>>> CC: m3devel at elegosoft.com
>>> Subject: Re: [M3devel] RC merge
>>>
>>> No, the hangs in Juno and mentor are no longer there.  I cannot  
>>> reproduce them on I386_DARWIN.
>>>
>>> On 11 Sep 2009, at 10:24, Jay K wrote:
>>>
>>> But the hangs are still present, right? Worth merging without that  
>>> fixed?
>>>
>>> How does one do it easily?
>>> I wish we used Perforce. :(
>>>
>>>  - Jay
>>>
>>>
>>> From: hosking at cs.purdue.edu
>>> To: m3devel at elegosoft.com
>>> Date: Fri, 11 Sep 2009 09:45:23 -0400
>>> Subject: [M3devel] RC merge
>>>
>>> Can someone merge my recent deep fixes to pthreads threading over  
>>> to the release branch?  I won't get a chance to do so until next  
>>> Monday at the earliest.
>>>
>>> Antony Hosking | Associate Professor | Computer Science | Purdue  
>>> University
>>> 305 N. University Street | West Lafayette | IN 47907 | USA
>>> Office +1 765 494 6001 | Mobile +1 765 427 5484
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20090912/814956f2/attachment-0002.html>


More information about the M3devel mailing list