experimental

The experimental object contains features that are known to have unstable API or behavior that may change in future releases.

Experimental features may undergo API changes in future releases, so production code should not rely on them.

Programmers are encouraged to try out experimental features and report any bugs or API inconsistencies they encounter so they can be improved in future releases.

Source:
language.scala
class Object
trait Matchable
class Any

Type members

Classlikes

Experimental support for erased modifier

Experimental support for erased modifier

See also:
Source:
language.scala

Experimental support for using indentation for arguments

Experimental support for using indentation for arguments

Source:
language.scala

Experimental support for generic number literals.

Experimental support for generic number literals.

See also:
Source:
language.scala

Experimental support for named type arguments.

Experimental support for named type arguments.

See also:
Source:
language.scala

Experimental support for typechecked exception capabilities

Experimental support for typechecked exception capabilities

See also:
Source:
language.scala

Implicits

Implicits

implicit lazy val macros: macros

Only where this feature is enabled, are macro definitions allowed.

Only where this feature is enabled, are macro definitions allowed. If macros is not enabled, macro definitions are rejected by the compiler.

Macro implementations and macro applications are not governed by this language feature; they can be used anywhere.

Why introduce the feature? Macros promise to make the language more regular, replacing ad-hoc language constructs with a general powerful abstraction capability that can express them. Macros are also a more disciplined and powerful replacement for compiler plugins.

Why control it? For their very power, macros can lead to code that is hard to debug and understand.

Source:
language.scala