<?xml version="1.0" encoding="UTF-8"?>
<!--

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.

-->
<?xml-stylesheet type="text/xml" href="CHANGEME/nbbuild/javadoctools/apichanges.xsl"?>
<!DOCTYPE apichanges PUBLIC "-//NetBeans//DTD API changes list 1.0//EN" "../../nbbuild/javadoctools/apichanges.dtd">


<apichanges>
    <apidefs>
        <apidef name="scripting_api">Scripting API</apidef>
        <apidef name="scripting_spi">Scripting SPI</apidef>
    </apidefs>

  <changes>
      <change id="builder">
          <api name="scripting_api"/>
          <summary>
              Scripting is now a builder!
          </summary>
          <version major="1" minor="2"/>
          <date day="1" month="6" year="2019"/>
          <author login="jtulach"/>
          <compatibility binary="compatible" source="compatible" addition="yes"/>
          <description>
              Use
              <a href="@TOP@/org/netbeans/api/scripting/Scripting.html">Scripting.newBuilder().build()</a>
              to obtain enhanced and secured version of 
              <a href="@JDK@/javax/script/ScriptEngineManager.html">ScriptEngineManager</a>.
          </description>
          <class package="org.netbeans.api.scripting" name="Scripting"/>
          <class package="org.netbeans.spi.scripting" name="EngineProvider"/>
      </change>
      <change id="initial.version">
          <api name="scripting_api"/>
          <summary>
              Initial version of Scripting API
          </summary>
          <version major="1" minor="0"/>
          <date day="1" month="2" year="2019"/>
          <author login="jtulach"/>
          <compatibility binary="compatible" source="compatible" addition="yes"/>
          <description>
              Use
              <a href="@TOP@/org/netbeans/api/scripting/Scripting.html">Scripting.createManager()</a>
              to obtain enhanced version of
              <a href="@JDK@/javax/script/ScriptEngineManager.html">ScriptEngineManager</a>
              that can work well with <a href="http://graalvm.org">GraalVM</a>
              languages registered via
              <a href="@TOP@/org/netbeans/spi/scripting/EngineProvider.html">EngineProvider</a>
          </description>
          <class package="org.netbeans.api.scripting" name="Scripting"/>
          <class package="org.netbeans.spi.scripting" name="EngineProvider"/>
      </change>
  </changes>

    <!-- Now the surrounding HTML text and document structure: -->

    <htmlcontents>
<!--

                            NO NO NO NO NO!

         ==============>    DO NOT EDIT ME!  <==============

          AUTOMATICALLY GENERATED FROM APICHANGES.XML, DO NOT EDIT

                SEE CHANGEME/apichanges.xml

-->
    <head>
      <title>Change History for the Progress API</title>
      <link rel="stylesheet" href="prose.css" type="text/css"/>
    </head>
    <body>

<p class="overviewlink"><a href="overview-summary.html">Overview</a></p>

<h1>Introduction</h1>

<p>This document lists changes made to the Progress API/SPI.</p>

<!-- The actual lists of changes, as summaries and details: -->

      <hr/><standard-changelists module-code-name="org.netbeans.api.progress"/>

      <hr/><p>@FOOTER@</p>

    </body>
  </htmlcontents>

</apichanges>
