<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.14 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2397 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2397.xml">
<!ENTITY RFC2978 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2978.xml">
<!ENTITY RFC3552 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3552.xml">
<!ENTITY RFC3629 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3629.xml">
<!ENTITY RFC3986 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3986.xml">
<!ENTITY RFC3987 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3987.xml">
<!ENTITY RFC4329 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4329.xml">
<!ENTITY RFC6265 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6265.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC3236 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3236.xml">
<!ENTITY RFC3875 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3875.xml">
]>

<?rfc toc="yes"?>
<?rfc tocindent="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-dispatch-javascript-mjs-09" category="info" obsoletes="4329">

  <front>
    <title>ECMAScript Media Types Updates</title>

    <author initials="M." surname="Miller" fullname="Matthew A. Miller">
      <organization></organization>
      <address>
        <email>linuxwolf+ietf@outer-planes.net</email>
      </address>
    </author>
    <author initials="M." surname="Borins" fullname="Myles Borins">
      <organization>GitHub</organization>
      <address>
        <email>mylesborins@github.com</email>
      </address>
    </author>
    <author initials="M." surname="Bynens" fullname="Mathias Bynens">
      <organization>Google</organization>
      <address>
        <email>mths@google.com</email>
      </address>
    </author>
    <author initials="B." surname="Farias" fullname="Bradley Farias">
      <organization></organization>
      <address>
        <email>bradley.meck@gmail.com</email>
      </address>
    </author>

    <date year="2021" month="June" day="30"/>

    <area>ART</area>
    <workgroup>DISPATCH</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document describes the registration of media types for the ECMAScript and JavaScript programming languages and conformance requirements for implementations of these types. This document obsoletes RFC4329, "Scripting Media Types", replacing the previous registrations for "text/javascript" and "application/javascript" with information and requirements aligned with implementation experiences.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>This memo describes media types for the JavaScript and ECMAScript programming languages.  Refer to the sections "Introduction" and "Overview" in <xref target="ECMA-262"/> for background information on these languages.  This document updates the descriptions and registrations for these media types to reflect existing usage on the Internet.</t>

<t>This document replaces the media types registrations in <xref target="RFC4329"/>, obsoleting that document.</t>

<section anchor="terminology" title="Terminology">

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14  <xref target="RFC2119"/>  <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>

</section>
</section>
<section anchor="compatibility" title="Compatibility">

<t>This document defines equivalent processing requirements for the types text/javascript, text/ecmascript, and application/javascript.  The most widely supported media type in use is text/javascript; all others are considered historical and obsolete compared to text/javascript.  Differences in ECMAScript versions have been better dealt with in the processors.</t>

<t>The types defined in this document are applicable to scripts written in <xref target="ECMA-262"/>.  This document does not address scripts written in other languages.  In particular, future editions of <xref target="ECMA-262"/> and extensions to <xref target="ECMA-262"/> are not directly addressed.</t>

<t>This document may be updated to take other content into account.  Updates of this document may introduce new optional parameters; implementations MUST consider the impact of such an update.</t>

<t>The definitions in this document reflect the current state of implementation across the JavaScript ecosystem, in web browsers and other environments such as Node.js alike, in order to guarantee backwards compatibility with existing applications as much as possible.</t>

</section>
<section anchor="modules" title="Modules">

<t>In order to formalize support for modular programs, <xref target="ECMA-262"/> (starting with 6th Edition) defines two top-level goal symbols (or roots to the abstract syntax tree) for the ECMAScript grammar: Module and Script.  The Script goal represents the original structure where the code executes in the global scope, while the Module goal represents the module system built into ECMAScript starting with 6th Edition.  See the section "ECMAScript Language: Scripts and Modules" of <xref target="ECMA-262"/> for details.</t>

<t>This separation means that (in the absence of additional information) there are two possible interpretations for any given ECMAScript Source Text. The TC39 standards body for ECMAScript has determined that media types are outside of their scope of work <xref target="TC39-MIME-ISSUE"/>.</t>

<t>It is not possible to fully determine if a Source Text of ECMAScript is meant to be parsed in the Module or Script grammar goals based upon content alone. Therefore, scripting environments MUST use out of band information in order to determine what goal a Source Text should be treated as. To this end some scripting environments have chosen to adopt the new file extension of .mjs for this purpose.</t>

<t>This document does not define how fragment identifiers in resource identifiers (<xref target="RFC3986"/>, <xref target="RFC3987"/>) for documents labeled with one of the media types defined in this document are resolved.  An update of this document may define processing of fragment identifiers.</t>

</section>
<section anchor="encoding" title="Encoding">

<t>Refer to <xref target="RFC6265"/> for a discussion of terminology used in this section.  Source text (as defined in <xref target="ECMA-262"/>, section "Source Text") can be binary source text.  Binary source text is a textual data object that represents source text encoded using a character encoding scheme.  A textual data object is a whole text protocol message or a whole text document, or a part of it, that is treated separately for purposes of external storage and retrieval.  An implementation's internal representation of source text and source text are not considered binary source text.</t>

<t>Implementations need to determine a character encoding scheme in order to decode binary source text to source text.  The media types defined in this document allow an optional charset parameter to explicitly specify the character encoding scheme used to encode the source text.</t>

<t>How implementations determine the character encoding scheme can be subject to processing rules that are out of the scope of this document.  For example, transport protocols can require that a specific character encoding scheme is to be assumed if the optional charset parameter is not specified, or they can require that the charset parameter is used in certain cases.  Such requirements are not considered part of this document.</t>

<t>Implementations that support binary source text MUST support binary source text encoded using the UTF-8 <xref target="RFC3629"/> character encoding scheme.  Module goal sources MUST be encoded as UTF-8, all other encodings will fail.  Source goal sources SHOULD be encoded as UTF-8; other character encoding schemes MAY be supported, but are discouraged.</t>

<section anchor="charset-parameter" title="Charset Parameter">

<t>The charset parameter provides a means to specify the character encoding scheme of binary source text.  Its value MUST match the mime-charset production defined in <xref target="RFC2978"/>, section 2.3, and SHOULD be a registered charset <xref target="CHARSETS"/>.  An illegal value is a value that does not match that production.</t>

<t>The charset parameter is only used when processing a Script goal source; Module goal sources MUST always be processed as UTF-8.</t>

</section>
<section anchor="character-encoding-scheme-detection" title="Character Encoding Scheme Detection">

<t>It is possible that implementations cannot interoperably determine a single character encoding scheme simply by complying with all requirements of the applicable specifications.  To foster interoperability in such cases, the following algorithm is defined.  Implementations apply this algorithm until a single character encoding scheme is determined.</t>

<t><list style="numbers">
  <t>If the binary source text is not already determined to be a Module goal and starts with a Unicode encoding form signature, the signature determines the encoding.  The following octet sequences, at the very beginning of the binary source text, are considered with their corresponding character encoding schemes:  <vspace blankLines='1'/>
    <figure><artwork><![CDATA[
 +------------------+----------+
 | Leading sequence | Encoding |
 |------------------+----------|
 | EF BB BF         | UTF-8    |
 | FF FE            | UTF-16LE |
 | FE FF            | UTF-16BE |
 +------------------+----------+
]]></artwork></figure>
  <vspace blankLines='1'/>
Implementations of this step MUST use these octet sequences to determine the character encoding scheme, even if the determined scheme is not supported.  If this step determines the character encoding scheme, the octet sequence representing the Unicode encoding form signature MUST be ignored when decoding the binary source text.</t>
  <t>If a charset parameter with a legal and understood value is specified, the value determines the character encoding scheme.</t>
  <t>If no other character encoding scheme is determined from the previous steps, it is assumed to be UTF-8.</t>
</list></t>

<t>If the character encoding scheme is determined to be UTF-8 through any means other than step 1 as defined above and the binary source text starts with the octet sequence EF BB BF, the octet sequence is ignored when decoding the binary source text.</t>

</section>
<section anchor="character-encoding-scheme-error-handling" title="Character Encoding Scheme Error Handling">

<t>Binary source text that is not properly encoded for the determined character encoding can pose a security risk, as discussed in section 5.  That said, because of the varied and complex environments scripts are executed in, most of the error handling specifics are left to the processors.  The following are broad guidelines that processors follow.</t>

<t>If binary source text is determined to have been encoded using a certain character encoding scheme that the implementation is unable to process, implementations can consider the resource unsupported (i.e., do not decode the binary source text using a different character encoding scheme).</t>

<t>Binary source text can be determined to have been encoded using a certain character encoding scheme but contain octet sequences that are not legal according to that scheme.  Implementations can substitute those illegal sequences with the replacement character U+FFFD (properly encoded for the scheme), or stop processing altogether.</t>

</section>
</section>
<section anchor="security-considerations" title="Security Considerations">

<t>Refer to <xref target="RFC3552"/> for a discussion of terminology used in this section.  Examples in this section and discussions of interactions of host environments with scripts, modules, and extensions to <xref target="ECMA-262"/> are to be understood as non-exhaustive and of a purely illustrative nature.</t>

<t>The programming language defined in <xref target="ECMA-262"/> is not intended to be computationally self-sufficient, rather it is expected that the computational environment provides facilities to programs to enable specific functionality.  Such facilities constitute unknown factors and are thus considered out of the scope of this document.</t>

<t>Derived programming languages are permitted to include additional functionality that is not described in <xref target="ECMA-262"/>; such functionality constitutes an unknown factor and is thus considered out of the scope of this document.  In particular, extensions to <xref target="ECMA-262"/> defined for the JavaScript programming language are not discussed in this document.</t>

<t>Uncontrolled execution of scripts can be exceedingly dangerous. Implementations that execute scripts MUST give consideration to their application's threat models and those of the individual features they implement; in particular, they MUST ensure that untrusted content is not executed in an unprotected environment.</t>

<t>Module scripts in ECMAScript can request the fetching and processing of additional scripts, called importing.  Implementations that support modules need to process imported sources in the same way scripts.  Further, there may be additional privacy and security concerns depending on the location(s) the original script and its imported modules are obtained from.  For instance, a script obtained from "host-a.example" could request to import a script from "host-b.example", which could expose information about the executing environment (e.g., IP address) to "host-b.example".  See the section "ECMAScript Language: Scripts and Modules" in <xref target="ECMA-262"/> for details.</t>

<t>Specifications for host environment facilities and for derived programming languages should include security considerations.  If an implementation supports such facilities, the respective security considerations apply.  In particular, if scripts can be referenced from or included in specific document formats, the considerations for the embedding or referencing document format apply.</t>

<t>For example, scripts embedded in application/xhtml+xml <xref target="RFC3236"/> documents could be enabled through the host environment to manipulate the document instance, which could cause the retrieval of remote resources; security considerations regarding retrieval of remote resources of the embedding document would apply in this case.</t>

<t>This circumstance can further be used to make information, that is normally only available to the script, available to a web server by encoding the information in the resource identifier of the resource, which can further enable eavesdropping attacks.  Implementation of such facilities is subject to the security considerations of the host environment, as discussed above.</t>

<t>The programming language defined in <xref target="ECMA-262"/> does include facilities to loop, cause computationally complex operations, or consume large amounts of memory; this includes, but is not limited to, facilities that allow dynamically generated source text to be executed (e.g., the eval() function); uncontrolled execution of such features can cause denial of service, which implementations MUST protect against.</t>

<t>With the addition of SharedArrayBuffer objects in ECMAScript version 8, it could be possible to implement a high-resolution timer which could lead to certain types of timin`g and side-channel attacks (e.g., <xref target="SPECTRE"/>).  Implementations can take steps to mitigate this concern, such as disabling or removing support for SharedArrayBuffer objects, or take additional steps to ensure access to this shared memory is only accessible between execution contexts that have some form of mutual trust.</t>

<t>A host environment can provide facilities to access external input. Scripts that pass such input to the eval() function or similar language features can be vulnerable to code injection attacks. Scripts are expected to protect against such attacks.</t>

<t>A host environment can provide facilities to output computed results in a user-visible manner.  For example, host environments supporting a graphical user interface can provide facilities that enable scripts to present certain messages to the user.  Implementations MUST take steps to avoid confusion of the origin of such messages.  In general, the security considerations for the host environment apply in such a case as discussed above.</t>

<t>Implementations are required to support the UTF-8 character encoding scheme; the security considerations of <xref target="RFC3629"/> apply.  Additional character encoding schemes may be supported; support for such schemes is subject to the security considerations of those schemes.</t>

<t>Source text is expected to be in Unicode Normalization Form C. Scripts and implementations MUST consider security implications of unnormalized source text and data.  For a detailed discussion of such implications refer to the security considerations in <xref target="RFC3629"/>.</t>

<t>Scripts can be executed in an environment that is vulnerable to code injection attacks.  For example, a CGI script <xref target="RFC3875"/> echoing user input could allow the inclusion of untrusted scripts that could be executed in an otherwise trusted environment.  This threat scenario is subject to security considerations that are out of the scope of this document.</t>

<t>The "data" resource identifier scheme <xref target="RFC2397"/>, in combination with the types defined in this document, could be used to cause execution of untrusted scripts through the inclusion of untrusted resource identifiers in otherwise trusted content.  Security considerations of <xref target="RFC2397"/> apply.</t>

<t>Implementations can fail to implement a specific security model or other means to prevent possibly dangerous operations.  Such failure could possibly be exploited to gain unauthorized access to a system or sensitive information; such failure constitutes an unknown factor and is thus considered out of the scope of this document.</t>

</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>The media type registrations herein are divided into two major categories: the sole media type "text/javascript" which is now in common usage, and all of the media types that are obsolete.</t>

<t>For both categories, The ECMAScript media types are to be updated to point to a non-vendor specific standard undated specification of ECMAScript. In addition, a new file extension of .mjs is to be added to the list of file extensions with the restriction that it must correspond to the Module grammar of <xref target="ECMA-262"/>. Finally, the <xref target="HTML"/> specification uses "text/javascript" as the default media type of ECMAScript when preparing script tags; therefore, "text/javascript" intended usage is to be moved from OBSOLETE to COMMON.</t>

<section anchor="common-javascript-media-types" title="Common Javascript Media Types">

<section anchor="textjavascript" title="text/javascript">

<t><list style="hanging">
  <t hangText='Type name:'>
  text</t>
  <t hangText='Subtype name:'>
  javascript</t>
  <t hangText='Required parameters:'>
  N/A</t>
  <t hangText='Optional parameters:'>
  charset, see section 4.1 of [this document].</t>
  <t hangText='Encoding considerations:'>
  Binary</t>
  <t hangText='Security considerations:'>
  See section 5 of [this document]..</t>
  <t hangText='Interoperability considerations:'>
  See various sections of [this document].</t>
  <t hangText='Published specification:'>
  [this document]</t>
  <t hangText='Applications which use this media type:'>
  Script interpreters as discussed in [this document].</t>
  <t hangText='Additional information:'>
        <list style="hanging">
        <t hangText='Magic number(s):'>
        n/a</t>
        <t hangText='File extension(s):'>
        .js, .mjs</t>
        <t hangText='Macintosh File Type Code(s):'>
        TEXT</t>
      </list>
  </t>
  <t hangText='Person &amp; email address to contact for further information:'>
  See Author's Address section of [this document].</t>
  <t hangText='Intended usage:'>
  COMMON</t>
  <t hangText='Restrictions on usage:'>
  The .mjs file extension signals that the file represents a JavaScript module. Execution environments that rely on file extensions to determine how to process inputs parse .mjs files using the Module grammar of <xref target="ECMA-262"/>.</t>
  <t hangText='Author:'>
  See Author's Address section of [this document].</t>
  <t hangText='Change controller:'>
  IESG &lt;iesg@ietf.org&gt;</t>
</list></t>

</section>
</section>
<section anchor="historic-javascript-media-types" title="Historic Javascript Media Types">

<t>The following media types are added or updated for historical purposes.  All herein have an intended usage of OBSOLETE, and are not expected to be in use with modern implementations.</t>

<section anchor="applicationecmascript" title="application/ecmascript">

<t><list style="hanging">
  <t hangText='Type name:'>
  application</t>
  <t hangText='Subtype name:'>
  ecmascript</t>
  <t hangText='Required parameters:'>
  N/A</t>
  <t hangText='Optional parameters:'>
  charset, see section 4.1 of [this document].</t>
  <t hangText='Encoding considerations:'>
  Binary</t>
  <t hangText='Security considerations:'>
  See section 5 of [this document]..</t>
  <t hangText='Interoperability considerations:'>
  See various sections of [this document].</t>
  <t hangText='Published specification:'>
  [this document]</t>
  <t hangText='Applications which use this media type:'>
  Script interpreters as discussed in [this document].</t>
  <t hangText='Additional information:'>
        <list style="hanging">
        <t hangText='Magic number(s):'>
        n/a</t>
        <t hangText='File extension(s):'>
        .es, .mjs</t>
        <t hangText='Macintosh File Type Code(s):'>
        TEXT</t>
      </list>
  </t>
  <t hangText='Person &amp; email address to contact for further information:'>
  See Author's Address section of [this document].</t>
  <t hangText='Intended usage:'>
  OBSOLETE</t>
  <t hangText='Restrictions on usage:'>
  This media type is obsolete; current implementations should use text/javascript as the only JavaScript/ECMAScript media type. The .mjs file extension signals that the file represents a JavaScript module. Execution environments that rely on file extensions to determine how to process inputs parse .mjs files using the Module grammar of <xref target="ECMA-262"/>.</t>
  <t hangText='Author:'>
  See Author's Address section of [this document].</t>
  <t hangText='Change controller:'>
  IESG &lt;iesg@ietf.org&gt;</t>
</list></t>

</section>
<section anchor="applicationjavascript" title="application/javascript">

<t><list style="hanging">
  <t hangText='Type name:'>
  application</t>
  <t hangText='Subtype name:'>
  javascript</t>
  <t hangText='Required parameters:'>
  N/A</t>
  <t hangText='Optional parameters:'>
  charset, see section 4.1 of [this document].</t>
  <t hangText='Encoding considerations:'>
  Binary</t>
  <t hangText='Security considerations:'>
  See section 5 of [this document]..</t>
  <t hangText='Interoperability considerations:'>
  charset, see section 4.1 of [this document].</t>
  <t hangText='Published specification:'>
  [this document]</t>
  <t hangText='Applications which use this media type:'>
  Script interpreters as discussed in [this document].</t>
  <t hangText='Additional information:'>
        <list style="hanging">
        <t hangText='Magic number(s):'>
        n/a</t>
        <t hangText='File extension(s):'>
        .js, .mjs</t>
        <t hangText='Macintosh File Type Code(s):'>
        TEXT</t>
      </list>
  </t>
  <t hangText='Person &amp; email address to contact for further information:'>
  See Author's Address section of [this document].</t>
  <t hangText='Intended usage:'>
  OBSOLETE</t>
  <t hangText='Restrictions on usage:'>
  This media type is obsolete; current implementations should use text/javascript as the only JavaScript/ECMAScript media type. The .mjs file extension signals that the file represents a JavaScript module. Execution environments that rely on file extensions to determine how to process inputs parse .mjs files using the Module grammar of <xref target="ECMA-262"/>.</t>
  <t hangText='Author:'>
  See Author's Address section of [this document].</t>
  <t hangText='Change controller:'>
  IESG &lt;iesg@ietf.org&gt;.</t>
</list></t>

</section>
<section anchor="applicationx-ecmascript" title="application/x-ecmascript">

<t><list style="hanging">
  <t hangText='Type name:'>
  application</t>
  <t hangText='Subtype name:'>
  x-ecmascript</t>
  <t hangText='Required parameters:'>
  N/A</t>
  <t hangText='Optional parameters:'>
  : charset, see section 4.1 of [this document].</t>
  <t hangText='Encoding considerations:'>
  Binary</t>
  <t hangText='Security considerations:'>
  See section 5 of [this document]..</t>
  <t hangText='Interoperability considerations:'>
  See various sections of [this document].</t>
  <t hangText='Published specification:'>
  [this document]</t>
  <t hangText='Applications which use this media type:'>
  Script interpreters as discussed in [this document].</t>
  <t hangText='Additional information:'>
        <list style="hanging">
        <t hangText='Magic number(s):'>
        n/a</t>
        <t hangText='File extension(s):'>
        .es, .mjs</t>
        <t hangText='Macintosh File Type Code(s):'>
        TEXT</t>
      </list>
  </t>
  <t hangText='Person &amp; email address to contact for further information:'>
  See Author's Address section of [this document].</t>
  <t hangText='Intended usage:'>
  OBSOLETE</t>
  <t hangText='Restrictions on usage:'>
  This media type is obsolete; current implementations should use text/javascript as the only JavaScript/ECMAScript media type. The .mjs file extension signals that the file represents a JavaScript module. Execution environments that rely on file extensions to determine how to process inputs parse .mjs files using the Module grammar of <xref target="ECMA-262"/>.</t>
  <t hangText='Author:'>
  See Author's Address section of [this document].</t>
  <t hangText='Change controller:'>
  IESG &lt;iesg@ietf.org&gt;</t>
</list></t>

</section>
<section anchor="applicationx-javascript" title="application/x-javascript">

<t><list style="hanging">
  <t hangText='Type name:'>
  application</t>
  <t hangText='Subtype name:'>
  x-javascript</t>
  <t hangText='Required parameters:'>
  N/A</t>
  <t hangText='Optional parameters:'>
  : charset, see section 4.1 of [this document].</t>
  <t hangText='Encoding considerations:'>
  Binary</t>
  <t hangText='Security considerations:'>
  See section 5 of [this document]..</t>
  <t hangText='Interoperability considerations:'>
  See various sections of [this document].</t>
  <t hangText='Published specification:'>
  [this document]</t>
  <t hangText='Applications which use this media type:'>
  Script interpreters as discussed in [this document].</t>
  <t hangText='Additional information:'>
        <list style="hanging">
        <t hangText='Magic number(s):'>
        n/a</t>
        <t hangText='File extension(s):'>
        .js, .mjs</t>
        <t hangText='Macintosh File Type Code(s):'>
        TEXT</t>
      </list>
  </t>
  <t hangText='Person &amp; email address to contact for further information:'>
  See Author's Address section of [this document].</t>
  <t hangText='Intended usage:'>
  OBSOLETE</t>
  <t hangText='Restrictions on usage:'>
  This media type is obsolete; current implementations should use text/javascript as the only JavaScript/ECMAScript media type. The .mjs file extension signals that the file represents a JavaScript module. Execution environments that rely on file extensions to determine how to process inputs parse .mjs files using the Module grammar of <xref target="ECMA-262"/>.</t>
  <t hangText='Author:'>
  See Author's Address section of [this document].</t>
  <t hangText='Change controller:'>
  IESG &lt;iesg@ietf.org&gt;</t>
</list></t>

</section>
<section anchor="textecmascript" title="text/ecmascript">

<t><list style="hanging">
  <t hangText='Type name:'>
  text</t>
  <t hangText='Subtype name:'>
  ecmascript</t>
  <t hangText='Required parameters:'>
  N/A</t>
  <t hangText='Optional parameters:'>
  : charset, see section 4.1 of [this document].</t>
  <t hangText='Encoding considerations:'>
  Binary</t>
  <t hangText='Security considerations:'>
  See section 5 of [this document]..</t>
  <t hangText='Interoperability considerations:'>
  See various sections of [this document].</t>
  <t hangText='Published specification:'>
  [this document]</t>
  <t hangText='Applications which use this media type:'>
  Script interpreters as discussed in [this document].</t>
  <t hangText='Additional information:'>
        <list style="hanging">
        <t hangText='Magic number(s):'>
        n/a</t>
        <t hangText='File extension(s):'>
        .es, .mjs</t>
        <t hangText='Macintosh File Type Code(s):'>
        TEXT</t>
      </list>
  </t>
  <t hangText='Person &amp; email address to contact for further information:'>
  See Author's Address section of [this document].</t>
  <t hangText='Intended usage:'>
  OBSOLETE</t>
  <t hangText='Restrictions on usage:'>
  This media type is obsolete; current implementations should use text/javascript as the only JavaScript/ECMAScript media type. The .mjs file extension signals that the file represents a JavaScript module. Execution environments that rely on file extensions to determine how to process inputs parse .mjs files using the Module grammar of <xref target="ECMA-262"/>.</t>
  <t hangText='Author:'>
  See Author's Address section of [this document].</t>
  <t hangText='Change controller:'>
  IESG &lt;iesg@ietf.org&gt;</t>
</list></t>

</section>
<section anchor="textjavascript10" title="text/javascript1.0">

<t><list style="hanging">
  <t hangText='Type name:'>
  text</t>
  <t hangText='Subtype name:'>
  javascript1.0</t>
  <t hangText='Required parameters:'>
  N/A</t>
  <t hangText='Optional parameters:'>
  : charset, see section 4.1 of [this document].</t>
  <t hangText='Encoding considerations:'>
  Binary</t>
  <t hangText='Security considerations:'>
  See section 5 of [this document]..</t>
  <t hangText='Interoperability considerations:'>
  See various sections of [this document].</t>
  <t hangText='Published specification:'>
  [this document]</t>
  <t hangText='Applications which use this media type:'>
  Script interpreters as discussed in [this document].</t>
  <t hangText='Additional information:'>
        <list style="hanging">
        <t hangText='Magic number(s):'>
        n/a</t>
        <t hangText='File extension(s):'>
        .js, .mjs</t>
        <t hangText='Macintosh File Type Code(s):'>
        TEXT</t>
      </list>
  </t>
  <t hangText='Person &amp; email address to contact for further information:'>
  See Author's Address section of [this document].</t>
  <t hangText='Intended usage:'>
  OBSOLETE</t>
  <t hangText='Restrictions on usage:'>
  This media type is obsolete; current implementations should use text/javascript as the only JavaScript/ECMAScript media type. The .mjs file extension signals that the file represents a JavaScript module. Execution environments that rely on file extensions to determine how to process inputs parse .mjs files using the Module grammar of <xref target="ECMA-262"/>.</t>
  <t hangText='Author:'>
  See Author's Address section of [this document].</t>
  <t hangText='Change controller:'>
  IESG &lt;iesg@ietf.org&gt;</t>
</list></t>

</section>
<section anchor="textjavascript11" title="text/javascript1.1">

<t><list style="hanging">
  <t hangText='Type name:'>
  text</t>
  <t hangText='Subtype name:'>
  javascript1.1</t>
  <t hangText='Required parameters:'>
  N/A</t>
  <t hangText='Optional parameters:'>
  : charset, see section 4.1 of [this document].</t>
  <t hangText='Encoding considerations:'>
  Binary</t>
  <t hangText='Security considerations:'>
  See section 5 of [this document]..</t>
  <t hangText='Interoperability considerations:'>
  See various sections of [this document].</t>
  <t hangText='Published specification:'>
  [this document]</t>
  <t hangText='Applications which use this media type:'>
  Script interpreters as discussed in [this document].</t>
  <t hangText='Additional information:'>
        <list style="hanging">
        <t hangText='Magic number(s):'>
        n/a</t>
        <t hangText='File extension(s):'>
        .js, .mjs</t>
        <t hangText='Macintosh File Type Code(s):'>
        TEXT</t>
      </list>
  </t>
  <t hangText='Person &amp; email address to contact for further information:'>
  See Author's Address section of [this document].</t>
  <t hangText='Intended usage:'>
  OBSOLETE</t>
  <t hangText='Restrictions on usage:'>
  This media type is obsolete; current implementations should use text/javascript as the only JavaScript/ECMAScript media type. The .mjs file extension signals that the file represents a JavaScript module. Execution environments that rely on file extensions to determine how to process inputs parse .mjs files using the Module grammar of <xref target="ECMA-262"/>.</t>
  <t hangText='Author:'>
  See Author's Address section of [this document].</t>
  <t hangText='Change controller:'>
  IESG &lt;iesg@ietf.org&gt;</t>
</list></t>

</section>
<section anchor="textjavascript12" title="text/javascript1.2">

<t><list style="hanging">
  <t hangText='Type name:'>
  text</t>
  <t hangText='Subtype name:'>
  javascript1.2</t>
  <t hangText='Required parameters:'>
  N/A</t>
  <t hangText='Optional parameters:'>
  : charset, see section 4.1 of [this document].</t>
  <t hangText='Encoding considerations:'>
  Binary</t>
  <t hangText='Security considerations:'>
  See section 5 of [this document]..</t>
  <t hangText='Interoperability considerations:'>
  See various sections of [this document].</t>
  <t hangText='Published specification:'>
  [this document]</t>
  <t hangText='Applications which use this media type:'>
  Script interpreters as discussed in [this document].</t>
  <t hangText='Additional information:'>
        <list style="hanging">
        <t hangText='Magic number(s):'>
        n/a</t>
        <t hangText='File extension(s):'>
        .js, .mjs</t>
        <t hangText='Macintosh File Type Code(s):'>
        TEXT</t>
      </list>
  </t>
  <t hangText='Person &amp; email address to contact for further information:'>
  See Author's Address section of [this document].</t>
  <t hangText='Intended usage:'>
  OBSOLETE</t>
  <t hangText='Restrictions on usage:'>
  This media type is obsolete; current implementations should use text/javascript as the only JavaScript/ECMAScript media type. The .mjs file extension signals that the file represents a JavaScript module. Execution environments that rely on file extensions to determine how to process inputs parse .mjs files using the Module grammar of <xref target="ECMA-262"/>.</t>
  <t hangText='Author:'>
  See Author's Address section of [this document].</t>
  <t hangText='Change controller:'>
  IESG &lt;iesg@ietf.org&gt;</t>
</list></t>

</section>
<section anchor="textjavascript13" title="text/javascript1.3">

<t><list style="hanging">
  <t hangText='Type name:'>
  text</t>
  <t hangText='Subtype name:'>
  javascript1.3</t>
  <t hangText='Required parameters:'>
  N/A</t>
  <t hangText='Optional parameters:'>
  : charset, see section 4.1 of [this document].</t>
  <t hangText='Encoding considerations:'>
  Binary</t>
  <t hangText='Security considerations:'>
  See section 5 of [this document]..</t>
  <t hangText='Interoperability considerations:'>
  See various sections of [this document].</t>
  <t hangText='Published specification:'>
  [this document]</t>
  <t hangText='Applications which use this media type:'>
  Script interpreters as discussed in [this document].</t>
  <t hangText='Additional information:'>
        <list style="hanging">
        <t hangText='Magic number(s):'>
        n/a</t>
        <t hangText='File extension(s):'>
        .js, .mjs</t>
        <t hangText='Macintosh File Type Code(s):'>
        TEXT</t>
      </list>
  </t>
  <t hangText='Person &amp; email address to contact for further information:'>
  See Author's Address section of [this document].</t>
  <t hangText='Intended usage:'>
  OBSOLETE</t>
  <t hangText='Restrictions on usage:'>
  This media type is obsolete; current implementations should use text/javascript as the only JavaScript/ECMAScript media type. The .mjs file extension signals that the file represents a JavaScript module. Execution environments that rely on file extensions to determine how to process inputs parse .mjs files using the Module grammar of <xref target="ECMA-262"/>.</t>
  <t hangText='Author:'>
  See Author's Address section of [this document].</t>
  <t hangText='Change controller:'>
  IESG &lt;iesg@ietf.org&gt;</t>
</list></t>

</section>
<section anchor="textjavascript14" title="text/javascript1.4">

<t><list style="hanging">
  <t hangText='Type name:'>
  text</t>
  <t hangText='Subtype name:'>
  javascript1.4</t>
  <t hangText='Required parameters:'>
  N/A</t>
  <t hangText='Optional parameters:'>
  : charset, see section 4.1 of [this document].</t>
  <t hangText='Encoding considerations:'>
  Binary</t>
  <t hangText='Security considerations:'>
  See section 5 of [this document]..</t>
  <t hangText='Interoperability considerations:'>
  See various sections of [this document].</t>
  <t hangText='Published specification:'>
  [this document]</t>
  <t hangText='Applications which use this media type:'>
  Script interpreters as discussed in [this document].</t>
  <t hangText='Additional information:'>
        <list style="hanging">
        <t hangText='Magic number(s):'>
        n/a</t>
        <t hangText='File extension(s):'>
        .js, .mjs</t>
        <t hangText='Macintosh File Type Code(s):'>
        TEXT</t>
      </list>
  </t>
  <t hangText='Person &amp; email address to contact for further information:'>
  See Author's Address section of [this document].</t>
  <t hangText='Intended usage:'>
  OBSOLETE</t>
  <t hangText='Restrictions on usage:'>
  This media type is obsolete; current implementations should use text/javascript as the only JavaScript/ECMAScript media type. The .mjs file extension signals that the file represents a JavaScript module. Execution environments that rely on file extensions to determine how to process inputs parse .mjs files using the Module grammar of <xref target="ECMA-262"/>.</t>
  <t hangText='Author:'>
  See Author's Address section of [this document].</t>
  <t hangText='Change controller:'>
  IESG &lt;iesg@ietf.org&gt;</t>
</list></t>

</section>
<section anchor="textjavascript15" title="text/javascript1.5">

<t><list style="hanging">
  <t hangText='Type name:'>
  text</t>
  <t hangText='Subtype name:'>
  javascript1.5</t>
  <t hangText='Required parameters:'>
  N/A</t>
  <t hangText='Optional parameters:'>
  : charset, see section 4.1 of [this document].</t>
  <t hangText='Encoding considerations:'>
  Binary</t>
  <t hangText='Security considerations:'>
  See section 5 of [this document]..</t>
  <t hangText='Interoperability considerations:'>
  See various sections of [this document].</t>
  <t hangText='Published specification:'>
  [this document]</t>
  <t hangText='Applications which use this media type:'>
  Script interpreters as discussed in [this document].</t>
  <t hangText='Additional information:'>
        <list style="hanging">
        <t hangText='Magic number(s):'>
        n/a</t>
        <t hangText='File extension(s):'>
        .js, .mjs</t>
        <t hangText='Macintosh File Type Code(s):'>
        TEXT</t>
      </list>
  </t>
  <t hangText='Person &amp; email address to contact for further information:'>
  See Author's Address section of [this document].</t>
  <t hangText='Intended usage:'>
  OBSOLETE</t>
  <t hangText='Restrictions on usage:'>
  This media type is obsolete; current implementations should use text/javascript as the only JavaScript/ECMAScript media type. The .mjs file extension signals that the file represents a JavaScript module. Execution environments that rely on file extensions to determine how to process inputs parse .mjs files using the Module grammar of <xref target="ECMA-262"/>.</t>
  <t hangText='Author:'>
  See Author's Address section of [this document].</t>
  <t hangText='Change controller:'>
  IESG &lt;iesg@ietf.org&gt;</t>
</list></t>

</section>
<section anchor="textjscript" title="text/jscript">

<t><list style="hanging">
  <t hangText='Type name:'>
  text</t>
  <t hangText='Subtype name:'>
  jscript</t>
  <t hangText='Required parameters:'>
  N/A</t>
  <t hangText='Optional parameters:'>
  : charset, see section 4.1 of [this document].</t>
  <t hangText='Encoding considerations:'>
  Binary</t>
  <t hangText='Security considerations:'>
  See section 5 of [this document]..</t>
  <t hangText='Interoperability considerations:'>
  See various sections of [this document].</t>
  <t hangText='Published specification:'>
  [this document]</t>
  <t hangText='Applications which use this media type:'>
  Script interpreters as discussed in [this document].</t>
  <t hangText='Additional information:'>
        <list style="hanging">
        <t hangText='Magic number(s):'>
        n/a</t>
        <t hangText='File extension(s):'>
        .js, .mjs</t>
        <t hangText='Macintosh File Type Code(s):'>
        TEXT</t>
      </list>
  </t>
  <t hangText='Person &amp; email address to contact for further information:'>
  See Author's Address section of [this document].</t>
  <t hangText='Intended usage:'>
  OBSOLETE</t>
  <t hangText='Restrictions on usage:'>
  The .mjs file extension signals that the file represents a JavaScript module. Execution environments that rely on file extensions to determine how to process inputs parse .mjs files using the Module grammar of <xref target="ECMA-262"/>.</t>
  <t hangText='Author:'>
  See Author's Address section of [this document].</t>
  <t hangText='Change controller:'>
  IESG &lt;iesg@ietf.org&gt;</t>
</list></t>

</section>
<section anchor="textlivescript" title="text/livescript">

<t><list style="hanging">
  <t hangText='Type name:'>
  text</t>
  <t hangText='Subtype name:'>
  livescript</t>
  <t hangText='Required parameters:'>
  N/A</t>
  <t hangText='Optional parameters:'>
  : charset, see section 4.1 of [this document].</t>
  <t hangText='Encoding considerations:'>
  Binary</t>
  <t hangText='Security considerations:'>
  See section 5 of [this document]..</t>
  <t hangText='Interoperability considerations:'>
  See various sections of [this document].</t>
  <t hangText='Published specification:'>
  [this document]</t>
  <t hangText='Applications which use this media type:'>
  Script interpreters as discussed in [this document].</t>
  <t hangText='Additional information:'>
        <list style="hanging">
        <t hangText='Magic number(s):'>
        n/a</t>
        <t hangText='File extension(s):'>
        .js, .mjs</t>
        <t hangText='Macintosh File Type Code(s):'>
        TEXT</t>
      </list>
  </t>
  <t hangText='Person &amp; email address to contact for further information:'>
  See Author's Address section of [this document].</t>
  <t hangText='Intended usage:'>
  OBSOLETE</t>
  <t hangText='Restrictions on usage:'>
  The .mjs file extension signals that the file represents a JavaScript module. Execution environments that rely on file extensions to determine how to process inputs parse .mjs files using the Module grammar of <xref target="ECMA-262"/>.</t>
  <t hangText='Author:'>
  See Author's Address section of [this document].</t>
  <t hangText='Change controller:'>
  IESG &lt;iesg@ietf.org&gt;</t>
</list></t>

</section>
<section anchor="textx-ecmascript" title="text/x-ecmascript">

<t><list style="hanging">
  <t hangText='Type name:'>
  text</t>
  <t hangText='Subtype name:'>
  x-ecmascript</t>
  <t hangText='Required parameters:'>
  N/A</t>
  <t hangText='Optional parameters:'>
  : charset, see section 4.1 of [this document].</t>
  <t hangText='Encoding considerations:'>
  Binary</t>
  <t hangText='Security considerations:'>
  See section 5 of [this document]..</t>
  <t hangText='Interoperability considerations:'>
  See various sections of [this document].</t>
  <t hangText='Published specification:'>
  [this document]</t>
  <t hangText='Applications which use this media type:'>
  Script interpreters as discussed in [this document].</t>
  <t hangText='Additional information:'>
        <list style="hanging">
        <t hangText='Magic number(s):'>
        n/a</t>
        <t hangText='File extension(s):'>
        .es, .mjs</t>
        <t hangText='Macintosh File Type Code(s):'>
        TEXT</t>
      </list>
  </t>
  <t hangText='Person &amp; email address to contact for further information:'>
  See Author's Address section of [this document].</t>
  <t hangText='Intended usage:'>
  OBSOLETE</t>
  <t hangText='Restrictions on usage:'>
  The .mjs file extension signals that the file represents a JavaScript module. Execution environments that rely on file extensions to determine how to process inputs parse .mjs files using the Module grammar of <xref target="ECMA-262"/>.</t>
  <t hangText='Author:'>
  See Author's Address section of [this document].</t>
  <t hangText='Change controller:'>
  IESG &lt;iesg@ietf.org&gt;</t>
</list></t>

</section>
<section anchor="textx-javascript" title="text/x-javascript">

<t><list style="hanging">
  <t hangText='Type name:'>
  text</t>
  <t hangText='Subtype name:'>
  x-javascript</t>
  <t hangText='Required parameters:'>
  N/A</t>
  <t hangText='Optional parameters:'>
  : charset, see section 4.1 of [this document].</t>
  <t hangText='Encoding considerations:'>
  Binary</t>
  <t hangText='Security considerations:'>
  See section 5 of [this document]..</t>
  <t hangText='Interoperability considerations:'>
  See various sections of [this document].</t>
  <t hangText='Published specification:'>
  [this document]</t>
  <t hangText='Applications which use this media type:'>
  Script interpreters as discussed in [this document].</t>
  <t hangText='Additional information:'>
        <list style="hanging">
        <t hangText='Magic number(s):'>
        n/a</t>
        <t hangText='File extension(s):'>
        .js, .mjs</t>
        <t hangText='Macintosh File Type Code(s):'>
        TEXT</t>
      </list>
  </t>
  <t hangText='Person &amp; email address to contact for further information:'>
  See Author's Address section of [this document].</t>
  <t hangText='Intended usage:'>
  OBSOLETE</t>
  <t hangText='Restrictions on usage:'>
  The .mjs file extension signals that the file represents a JavaScript module. Execution environments that rely on file extensions to determine how to process inputs parse .mjs files using the Module grammar of <xref target="ECMA-262"/>.</t>
  <t hangText='Author:'>
  See Author's Address section of [this document].</t>
  <t hangText='Change controller:'>
  IESG &lt;iesg@ietf.org&gt;</t>
</list></t>

</section>
</section>
</section>


  </middle>

  <back>

    <references title='Normative References'>

&RFC2119;
&RFC2397;
&RFC2978;
&RFC3552;
&RFC3629;
&RFC3986;
&RFC3987;
&RFC4329;
&RFC6265;
&RFC8174;
<reference anchor="CHARSETS" target="https://www.iana.org/assignments/character-sets">
  <front>
    <title>Assigned character sets</title>
    <author >
      <organization>IANA</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="ECMA-262" target="https://ecma-international.org/publications/standards/Ecma-262.htm">
  <front>
    <title>Standard ECMA-262: ECMAScript Language Specification</title>
    <author >
      <organization>Ecma International</organization>
    </author>
    <date year="2019" month="June"/>
  </front>
</reference>


    </references>

    <references title='Informative References'>

&RFC3236;
&RFC3875;
<reference anchor="HTML" target="https://html.spec.whatwg.org/multipage/scripting.html#prepare-a-script">
  <front>
    <title>HTML Living Standard</title>
    <author >
      <organization>WHATWG</organization>
    </author>
    <date year="2017" month="August"/>
  </front>
</reference>
<reference anchor="SPECTRE" target="https://arxiv.org/abs/1801.01203">
  <front>
    <title>Spectre Attacks: Exploiting Speculative Execution</title>
    <author initials="P." surname="Kocher" fullname="Paul Kocher">
      <organization></organization>
    </author>
    <author initials="A." surname="Fogh" fullname="Anders Fogh">
      <organization></organization>
    </author>
    <author initials="D." surname="Gerkin" fullname="Daniel Gerkin">
      <organization></organization>
    </author>
    <author initials="D." surname="Gruss" fullname="Daniel Gruss">
      <organization></organization>
    </author>
    <author initials="W." surname="Haas" fullname="Werner Haas">
      <organization></organization>
    </author>
    <author initials="M." surname="Hamburg" fullname="Mike Hamburg">
      <organization></organization>
    </author>
    <author initials="M." surname="Lipp" fullname="Moritz Lipp">
      <organization></organization>
    </author>
    <author initials="S." surname="Mangard" fullname="Stefan Mangard">
      <organization></organization>
    </author>
    <author initials="T." surname="Prescher" fullname="Thomas Prescher">
      <organization></organization>
    </author>
    <author initials="M." surname="Schwarz" fullname="Michael Schwarz">
      <organization></organization>
    </author>
    <author initials="Y." surname="Yarom" fullname="Yuval Yarom">
      <organization></organization>
    </author>
    <date year="2018" month="January"/>
  </front>
</reference>
<reference anchor="TC39-MIME-ISSUE" target="https://web.archive.org/web/20170814193912/https://github.com/tc39/ecma262/issues/322">
  <front>
    <title>Add `application/javascript+module` mime to remove ambiguity</title>
    <author >
      <organization>TC39</organization>
    </author>
    <date year="2017" month="August"/>
  </front>
</reference>


    </references>


<section anchor="acknowledgements" title="Acknowledgements">

<t>This work builds upon its antecedent document, authored by Bjoern Hoehrmann.  The authors would like to thank Adam Roach, Anne van Kesteren, Allen Wirfs-Brock, Alexey Melnikov, James Snell, Mark Nottingham, Murray Kucherawy, and Suresh Krishnan for their guidance and feedback throughout this process.</t>

</section>
<section anchor="changes-from-rfc-4329" title="Changes from RFC 4329">

<t><list style="symbols">
  <t>Added a section discussing ECMAscript modules and the impact on processing.</t>
  <t>Updated the Security Considerations to discuss concerns associated with ECMAscript modules and SharedArrayBuffers.</t>
  <t>Updated the character encoding scheme detection to remove normative guidance on its use, to better reflect operational reality.</t>
  <t>Changed the intended usage of the media type text/javascript from obsolete to common.</t>
  <t>Changed the intended usage for all other script media types to obsolete.</t>
  <t>Updated various references where the original has been osboleted</t>
  <t>Updated references to ECMA-262 to match the version at time of publication.</t>
</list></t>

</section>


  </back>

<!-- ##markdown-source:
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
35YAAA==

-->

</rfc>

