On Friday, 14 December 2012 at 03:40:05 UTC, Jonathan M Davis
wrote:
On Thursday, December 13, 2012 22:19:18 Andrei Alexandrescu
wrote:
On 12/13/12 8:55 PM, kenji hara wrote:
> I think we should have -future/-f switch and @future
> attribute.
> It is a rough idea, but seems a required compiler feature.
>
> Kenji Hara
That sounds interesting.
I believe that python has something similar.
It does, but in Python they are only for breaking changes (for
example when a new keyword is added, first you have to use form
__future__import feature). Is kind of the reverse of deprecated.
Also __future__ in Python is not really for experimental
features, is for final ones, and present only to easy the
migration (again, same as deprecated).
If the idea is to enable experimental features, I would name this
-experimental rather than -future, which makes much clearer that
you're on your own if you use that flag.
Regarding attributes, a simple solution is to release it but
without
official documentation. We place the documentation in a
/unstable/
directory of the website, distinct from the central mainstream
documentation.
People who already started or want to start using attributes
understand
there are instabilities associated with them. Existing code is
unaffected, only certain programs that are technically invalid
will
actually compile and run.
Works?
Only if you don't set this new experimental features in stone if
some company have the crazy idea of start using it ;-)
Yes. And attributes may not actually need much more work, but
adding new,
essentially untested features into the language and releasing
them doesn't
jive well with the recent push to stabilize and avoid breaking
any code,
because such features will frequently need changes which will
break code.
Hopefully, the adjustments to the release process that are
being discussed
will fix this sort of problem long term, but it comes across
like Walter is
willing to throw new features in but then generally refuses to
change things
which break code, which risks us being stuck with features that
aren't quite
what they could be or should be. The situation with UDAs
definitely highlights
the need to adjust our release process.
Yes, to be honest, I don't think adding experimental features to
what is supposed to be a stable compiler is a great idea. I think
the best option is to add an experimental branch and add new
features there. Having a nightly snapshot build of this
experimental branch should be enough to encourage people to play
with it making extremely clear that there are no warranties about
the stability of that compiler, or on the continuation of new
features there.