On Mon, Jun 10, 2013 at 8:51 PM, james anderson james.anderson@setf.de wrote:
it appears that the semantics of the elementary form is unambiguously known and supported in all contexts, that there is no indication of impending changes which would change this situation, and that, given these circumstances, the deprecation warning is gratuitous and can actually be ignored.
is this a true comprehension of the situation?
Indeed, we've done our best not to break backwards compatibility. So, if you're pressed for time, you can safely ignore the warnings for now.
We probably overlooked the annoyance that the style-warning may be causing. You can muffle the warning in the following less-than-ideal way:
(handler-bind ((alexandria:simple-style-warning (lambda (warning) (when (alexandria:starts-with-subseq "bare references to struct types are deprecated." (simple-condition-format-control warning)) (muffle-warning warning))))) (load-your-ffi-code-here))
[ Hooking this up with ASDF is left as an exercise for the reader. :-) ]
if i have overlooked or disregarded some key aspect of this change, please advise.
The thing is, given a struct foo, the FOO type means different things in different contexts. Sometimes it has pass-by-reference semantics, other times it has pass-by-value semantics. This was less of an issue when each context only had to handle one of the semantics, but now that both are supported (thanks to cffi-libffi), we have to disambiguate.
There were two reasons for deprecating the bare struct type, then.
From the implementation point of view, the disambiguation code is
intrusive and error-prone so we'd like to remove it as soon as possible. From the API point of view, the bare struct type became even more schizophrenic.
There's no scheduled date for the removal of the bare struct type, but it won't be removed without a proper and timely warning.
Cheers,
-- Luís Oliveira http://r42.eu/~luis/