On 2013-10-02 11:38 AM, Botond Ballo wrote:
I'm also interested in seeing proposals for standardization of more
complex attributes that we have static analysis results for--in
particular, the stack class/heap class/etc. annotations, the
must_override analysis, and expanding override/must_override to refer to
nonvirtual as well as virtual methods.

I'm not familiar with these annotations (other than 'override') -
can I find more information about them somewhere?

<http://dxr.mozilla.org/mozilla-central/source/mfbt/Attributes.h#l384>
is the list of analyses we currently do in Mozilla. I know must_override
has been mentioned once or twice with respect to C++ standardization,
but I can't recall where.

Interesting. How is this static analysis implemented - a clang plugin?
Does it cause compiler errors or warnings when the annotations aren't
obeyed?

It is implemented as a clang plugin here: <http://mxr.mozilla.org/mozilla-central/source/build/clang-plugin/clang-plugin.cpp>. The compiler will emit an error if it detects a violation of the annotations.

Cheers,
Ehsan

I haven't heard any discussion of such annotations in Chicago. One
attribute, [[deprecated]], was standardized, but that's it. I'll keep
my eyes open and let you know if I come across any talk of them.

The implementation timeframe of modules is also interesting, since it
appears to be the best-proposed solution to solving various #include
problems.
See my previous post about modules. In a nutshell, C++17 at the earliest.

What is the feedback from non-Clang developers about prototyping in
their compilers? Are we likely to see this implemented as soon as stable
wording is finalized, or are compiler vendors likely to drag their feet
and implement it in the last tranche of updates (basically, is the
uptake going to be like auto or rvalue references, or will it be like
generalized attributes or alignof).

I'm not aware of other compilers actively working on it at the moment.
It sounded like they were waiting for clang to implement it to see
if the idea is viable at all.

An EDG developer present at the meeting pointed out that many of the
difficulties in implementing modules are the same difficulties that
are involved in implementing 'export'. EDG was the only compiler
that implemented 'export', so that's not a very encouraging sign,
but I also think the level of demand is much higher for modules
(which most people agree will be very useful) than it was for export
(which most people agreed was useless).

One thing that was brought up is that clang was able to leverage
its PCH (pre-compiled header) implementation, which is basically
just a serialized AST, for its implementation of modules, but
GCC's PCH implementation, which is just a compiler memory dump,
is less suitable for this purpose. This suggests that it will
require more effort for GCC to implement modules than clang.

Neither of these proposals are on track for C++14. I *believe* they're
not on track for the Concurrency Technical Specification that will
follow, either, though I don't think the contents of that have been
finalized yet.

Huh.

I'll post a follow-up email about the various Technical
Specifications that are in the works, and what's likely to be
in them.

Botond
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to