Thanks for all the work you've done on this, Attila.

Quick question: The project still seems to be using Ant. Is there a
reason for that? Would you merge a PR that ported the build system to
Maven or Gradle instead? (and if so, do you have a preference for
either one?) IME, Ant is rather inaccessible as a tool these days, and
so it might be a good idea to get off it early on.

Thanks,

Ben

On Sun, 15 Nov 2020 at 18:26, Attila Szegedi <szege...@gmail.com> wrote:
>
> Hi y’all,
>
> openjdk/nashorn repo is up and its main branch is populated with the initial 
> copy of Nashorn as it existed in JDK 14. I added a fix for wrong/missing 
> licenses for two files (agreed with Oracle) and an initial project README on 
> top of it.
>
> An even better news is that I have the initial standalone Nashorn 15.0.0 PR 
> up ready for review. It is at:
>
> <https://github.com/openjdk/nashorn/pull/3>
>
>
> The PR describes the steps to build the artifacts. I’d like to encourage 
> everyone here to try it out and report back with your experiences, and to 
> also give an earnest review of the PR. If it works out okay, we could merge 
> this into main in the next few days and then I can get the artifacts 
> published into Maven Central!
>
> Attila.
>
> > On 2020. Oct 25., at 18:07, Attila Szegedi <szege...@gmail.com> wrote:
> >
> > Hi y’all,
> >
> > trying to get into the habit of making these weekly updates until I have 
> > something else to show.
> >
> > * With Remi’s, Sundar’s and Mandy’s help I fixed anonymous code loading. 
> > We’ll be using the sun.misc.Unsafe for now, with hope to transition to 
> > Lookup.defineHiddenClass somewhere down the line.
> >
> > * I started using Ivy as the dependency manager in our build.xml, and right 
> > now I also have an Ant task that builds all the artifacts for Maven 
> > publication.
> >
> > The first version of Maven artifacts (jar, javadoc, sources, Maven pom 
> > file) is basically ready to go. All we’re waiting for is for Oracle to 
> > create the openjdk/nashorn repository and approve its initial contents. I 
> > started the relevant conversation about it 12 days ago… it is going slower 
> > than I hoped for.
> >
> > What do you all think of the version number? Nashorn never had its own 
> > separate version number, but I’m thinking we could start the standalone 
> > version at 15. I don’t expect we’ll remain in lockstep with OpenJDK (so 
> > it’ll remain at 15 significantly longer), but it might be a good strategy 
> > to at least retroactively be able to talk about it without confusion, e.g. 
> > “Nashorn 11” is Nashorn-as-in-Java-11 and “Nashorn 14” is 
> > Nashorn-as-in-Java-14. And “Nashorn 15” is then quite naturally the first 
> > standalone version.
> >
> > Attila.
> >
> >> On 2020. Oct 19., at 17:16, Attila Szegedi <szege...@gmail.com> wrote:
> >>
> >> Hi y’all,
> >>
> >> a quick update with regard of what’s been happening since the last post.
> >>
> >> * I’m talking with folks at Oracle about setting up the openjdk/nashorn 
> >> repo. We’re hashing out what the initial content of the repo should be.
> >>
> >> * The licensing for the standalone Nashorn is confirmed to be 
> >> GPLv2+Classpath exception.
> >>
> >> * In anticipation of getting a public repo, I’ve been not sitting idle, 
> >> but rather I’m working in a private repo to get ahead with the necessary 
> >> adaptations. I have a version now that passes the internal test suite 
> >> (with an asterisk) and passes the whole test262[0] suite (no asterisk 
> >> there, it all passes.)
> >>
> >> * I still need to figure out the minimal descriptive pom.xml (dependencies 
> >> etc., no build information) in order to be able to produce Maven 
> >> artifacts. Right now, Nashorn’s build and test process is highly 
> >> customized set of Ant build.xml files, so it can’t just be converted to 
> >> “vanilla” Maven or Gradle. It’s a long term goal though (to switch it from 
> >> our custom Ant build.xml to either one of these.) Initially, it might make 
> >> sense to use Apache Ivy within our Ant build to handle both dependencies 
> >> and publication.
> >>
> >> As for test suite asterisks:
> >>
> >> * For now, I moved all the jjs related tests into “currently failing” 
> >> directory as I did not have time to figure out how to build jjs. We can 
> >> sort out later if/when/how we want to resurrect jjs.
> >>
> >> * sandbox/nashorninternals.js test is moved to “currently failing” too. 
> >> I’m pretty sure that what it’s been testing is no longer relevant. Tests 
> >> artificially are restricted from accessing internal Nashorn internal 
> >> packages and this is validated. Unfortunately, keeping Nashorn internals 
> >> in the list of access-checked packages causes lots of issues for Nashorn 
> >> itself in the tests, so I removed internal packages from the access-check 
> >> list. I separately kept a test package that’s used to assert scripts can’t 
> >> access such packages, and it works fine.
> >>
> >> * for now, I disabled anonymous code loading. It’s a funny one. Nashorn 
> >> has a feature called “anonymous code loading” that it uses for somewhat 
> >> lighter-weight loading of code as it compiles JavaScript functions 
> >> one-by-one into bytecode classes. Unfortunately, it uses 
> >> Unsafe.defineAnonymousClass for that, and outside of JDK it can’t access 
> >> Unsafe. So I switched to a new API,  luckily available from Java 15, 
> >> MethodHandles.Lookup.defineHiddenClass. It seems to work as it should, 
> >> except with it, eval’d expressions no longer report “<eval>” as their 
> >> script name and anonymous functions no longer report “<anonymous>” but 
> >> rather their callers names, script names, and line numbers are reported. 
> >> It’s quite maddening, and if I can’t get to the bottom of it in reasonable 
> >> amount of time, I’ll just keep anonymous code loading switched off for 
> >> initial release. There’s not many drawbacks to it, maybe a bit higher 
> >> memory utilization if you don’t use optimistic types. With optimistic 
> >> types, it would preclude obsolete code versions from clearing up from 
> >> memory when functions are repeatedly recompiled until the whole script 
> >> gets unloaded.
> >>
> >> Attila.
> >>
> >> [0] https://github.com/tc39/test262/tree/es5-tests
> >>
> >>> On 2020. Oct 11., at 9:28, Attila Szegedi <szege...@gmail.com> wrote:
> >>>
> >>> Folks,
> >>>
> >>> some good news for y'all (presumably you're on this mailing list because 
> >>> you are interested in Nashorn.)
> >>>
> >>> Since Nashorn's removal from JDK starting with Java 15, numerous people 
> >>> have realized that they, in fact, rely on it. To remedy the situation, 
> >>> Nashorn will continue as a standalone project within the OpenJDK 
> >>> organization.
> >>>
> >>> You might ask, "But isn't Nashorn officially dead?", to which the answer 
> >>> is: no, it isn’t. The project’s product is merely no longer shipped as 
> >>> part of the JDK project. The Nashorn project in OpenJDK organization is 
> >>> still live[1], along with all of its resources including the mailing list 
> >>> this message is posted on. It was merely not active for a while, until 
> >>> now.
> >>>
> >>> What does this mean in practical terms? The following will happen or are 
> >>> happening:
> >>>
> >>> * Project communication will continue on this mailing list 
> >>> (<nashorn-dev@openjdk.java.net>).
> >>>
> >>> * A GitHub project openjdk/nashorn will be set up. It will be populated 
> >>> by a clone of the openjdk/jdk14u repo that has been filtered for  
> >>> Nashorn-only commits. (Thanks, git-filter-repo[2], you are awesome!) 
> >>> There will be no synchronization back to jdk14u afterwards, it won't act 
> >>> as an upstream. openjdk/nashorn proceeds independently from that point on.
> >>>
> >>> * The project will change the module and package names as it can't keep 
> >>> living within the top-level "jdk." package. In accordance with other 
> >>> independently-developed OpenJDK projects, it will transition to module 
> >>> and package names within the "org.openjdk." package. Fortunately for 
> >>> Nashorn, it is mostly used through the "javax.script.*" APIs so people 
> >>> that use it through those APIs won't have to adapt their code. Creating 
> >>> the engine by name as described in Nashorn’s last (JDK 14) API docs[3] 
> >>> will continue to work. People that used to use the Nashorn-specific API 
> >>> (typically, AbstractJSObject and ScriptObjectMirror) will need to adapt 
> >>> their code for new package names, though.
> >>>
> >>> * Project artifacts (in plain English: JAR file to be used with Maven 
> >>> etc.) will be published on SonaType under the "org.openjdk" organization, 
> >>> again similar to other independently-developed OpenJDK projects.
> >>>
> >>> The goal for the initial release is to ship a standalone Nashorn with 
> >>> identical functionality to that in JDK 14, with the only changes being:
> >>>
> >>> * reversing of deprecation and “scheduled for removal” notices,
> >>> * enacting the package and module name changes,
> >>> * replacing or removing dependencies on various jdk.internal.* packages 
> >>> since those are no longer exported from JDK modules to the Nashorn module.
> >>>
> >>> It is possible for expediency that we will decide to ship Nashorn as a 
> >>> library first, and separately ship the initial version of the jjs shell 
> >>> sometime later.
> >>>
> >>> I’m personally undertaking these initial tasks. I will let you know here 
> >>> on the list about the progress, and once the repo is set up the work will 
> >>> also start appearing on a branch.
> >>>
> >>> There are some other aspects of the project that need to be worked out: 
> >>> contribution and review guidelines, publication location of the 
> >>> accompanying documentation (that will no longer be part of the JDK 
> >>> documentation) and so on. I will post discussion-initiating e-mails for 
> >>> these as well as time comes and will absolutely welcome feedback on them, 
> >>> just as I welcome feedback on this plan too.
> >>>
> >>> Attila.
> >>>
> >>> --
> >>> [1] https://openjdk.java.net/projects/nashorn/
> >>> [2] https://github.com/newren/git-filter-repo
> >>> [3] 
> >>> https://docs.oracle.com/en/java/javase/14/docs/api/jdk.scripting.nashorn/module-summary.html
> >>
> >
>

Reply via email to