Class/Object

org.scalajs.linker.interface

ESFeatures

Related Docs: object ESFeatures | package interface

Permalink

final class ESFeatures extends AnyRef

ECMAScript features to use when linking to JavaScript.

The options in ESFeatures specify what features of modern versions of JavaScript are used by the Scala.js linker.

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. ESFeatures
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. val allowBigIntsForLongs: Boolean

    Permalink

    EXPERIMENTAL: Primitive Longs *may* be compiled as primitive JavaScript bigints.

    EXPERIMENTAL: Primitive Longs *may* be compiled as primitive JavaScript bigints.

    Default: false

    Future versions of Scala.js may decide to ignore this setting.

  5. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  6. val avoidClasses: Boolean

    Permalink

    Avoid class'es when using functions and prototypes has the same observable semantics.

    Avoid class'es when using functions and prototypes has the same observable semantics.

    Default: true

    SpiderMonkey is known to exhibit terrible performance with JavaScript class'es, with up to an order of magnitude of performance degradation.

    Setting this option to true provides a hint to the Scala.js linker to avoid using class'es when using other JavaScript features (typically functions and prototypes) has the same observable semantics, in order to improve expected performance. Setting it to false provides a hint not to avoid class'es. Either way, the linker is free to ignore this option.

    Avoiding class'es has a negative impact on code size. If the code is only targeted at engines that are known to have good performance with class'es, it is desirable to set this option to false. If the code is targeted at browsers (among others), it is recommended to set it to true.

    This option never affects the code emitted for JavaScript classes (classes extending js.Any), since that would have an impact on observable semantics.

    This option is always ignored when useECMAScript2015 is false.

  7. val avoidLetsAndConsts: Boolean

    Permalink

    Avoid lets and consts when using vars has the same observable semantics.

    Avoid lets and consts when using vars has the same observable semantics.

    Default: true

    Due to their semantics in JavaScript (their Temporal Dead Zone, TDZ), lets and consts are more difficult for engines to optimize than vars. There have been known cases of dramatic performance issues with them, such as the Webkit issue https://bugs.webkit.org/show_bug.cgi?id=199866.

    Setting this option to true provides a hint to the Scala.js linker to avoid using them when using a var has the same observable semantics, in order to improve expected performance. Setting it to false provides a hint not to avoid lets and consts. Either way, the linker is free to ignore this option.

    Using lets and consts has benefits for humans writing code as they help readability and debugging, but there is little to no benefit in using them when the code is compiler-generated.

    This option is always ignored when useECMAScript2015 is false.

  8. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  9. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  10. def equals(that: Any): Boolean

    Permalink
    Definition Classes
    ESFeatures → AnyRef → Any
  11. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  12. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  13. def hashCode(): Int

    Permalink
    Definition Classes
    ESFeatures → AnyRef → Any
  14. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  15. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  16. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  17. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  18. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  19. def toString(): String

    Permalink
    Definition Classes
    ESFeatures → AnyRef → Any
  20. val useECMAScript2015: Boolean

    Permalink

    Use ECMAScript 2015 features, such as classes and arrow functions.

    Use ECMAScript 2015 features, such as classes and arrow functions.

    Default: true

    When true, the following behaviors are guaranteed:

    • JavaScript classes are true class'es, therefore a) they can extend native JavaScript class'es and b) they inherit static members from their parent class.
    • Throwable classes are proper JavaScript error classes, recognized as such by debuggers.
    • In Script (NoModule) mode, top-level exports are defined as lets rather than vars, and behave as such.
  21. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  22. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  23. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  24. def withAllowBigIntsForLongs(allowBigIntsForLongs: Boolean): ESFeatures

    Permalink
  25. def withAvoidClasses(avoidClasses: Boolean): ESFeatures

    Permalink
  26. def withAvoidLetsAndConsts(avoidLetsAndConsts: Boolean): ESFeatures

    Permalink
  27. def withUseECMAScript2015(useECMAScript2015: Boolean): ESFeatures

    Permalink

Inherited from AnyRef

Inherited from Any

Ungrouped