<?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-08" 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="February" day="22"/>

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

    <abstract>


<t>This document updates the ECMAScript media types, replacing the existing registrations for "application/javascript" and "text/javascript" with information and requirements aligned with implementation experiences.  This document obsoletes RFC4329, "Scripting Media Types".</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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
f9R4gcaNzdWw998+BkMoYZYAAA==

-->

</rfc>

