Hi,

On Mon 06 Jul 2009 21:30, l...@gnu.org (Ludovic Courtès) writes:

> Andy Wingo <wi...@pobox.com> writes:
>
>> Good question. I suppose you have this case in mind:
>>
>>   (define s0 (string "foooooo"))
>>   (define s1 (substring/shared s0 0))
>>   (define s2 (substring/shared s1 0))
>>   (par-for-each (lambda (s) (string-set! s 0 #\b))
>>                 (list s0 s1 s2))
>
> Yes.  OTOH, the doc doesn't say that concurrent array accesses are safe,
> so array accesses are supposed to be synchronized at the application
> level, using mutexes, I suppose.

They should be safe in the sense that they shouldn't crash Guile, but
the result may be strange -- e.g. hashtable insertion.

> Still, I don't feel like we have any compelling reason to remove
> `scm_array_handle_release ()'.  One argument to keep it is that it's the
> kind of thing that's much easier to remove than to reinstate, and "we
> never know".  Also, removing it would cause gratuitous
> incompatibility.

To me this is a weak argument, especially given that much code probably
doesn't do the right thing in the presence of nonlocal exits.

Regarding compatibility, we could #define it to nothing if we compile
without DISABLE_DEPRECATED.

Cheers,

Andy
-- 
http://wingolog.org/


Reply via email to