Replies: 8 comments 10 replies
-
Also see #1362 and specifically #1362 (comment) And also the v2 project created a while ago: https://github.com/mozilla/rhino/projects/2 |
Beta Was this translation helpful? Give feedback.
-
I'm all for doing whatever it takes to move the Rhino project forward and making it future proof and more easily maintainable, even if that means introducing breaking changes (as long as we're very good at communicating what we're breaking and how to resolve the breakage). Do think that we have to try to bundle all the 'breaking' we want to do in a single release, to anyone using Rhino only need to go through a breaking upgrade once. * HOWAs for the how: my preference would be to keep the backwards compatible and a new non-backward compatible version (lets call then v1.x and v2 resp. for now) in the same repo. I would propose to create a new * Scriptable changesWrt * Restructure the source code to modern Gradle standards and into proper Java modulesThink we should try to get closure on at least the last 15 or so PR's (of the total of 29 currently open) and do a shout-out to the community to request any changes that aren't submitted as PR's yet to be submitted asap, as to minimize the impact of such relayout of the codebase * Getting rid of synchronizationShould really discuss in the already existing issue, but we do need to think about the overd of Context creation, if a Context can only be used by a single Thread at a time., as it's might be a scaling issue (also an issue in Graal). Also wonder if/how the Secure EcmaScript (SES) proposal might fit into this: given that the overhead of setting up a Context lies in creating all the standard objects (assuming here) and that in SES those Objects are locked down before being shared in different Compartments, making Compartments a lot more light-weight, could different Compartments be used in different threads concurrently? * Getting rid of serializationPersonally no problems here, have not seen any other usage of serialization but for Continuations, so if we can offer an alternative there... In #1178 (comment) and #704 (comment) I think there are already pointers to use Continuations without reliance on Java Serialization (but I might be wrong) * Rip out the "language version" capabilityI'm not sure what I think about this proposal, think we might need to keep at least some versioning system until such time that we are EcmaScript standard compliant. And even then, we might want to have some flags to allow implementing EcmaScript proposals that aren't yet finalized Just note that Graal does support specifying language version. * Re:
|
Beta Was this translation helpful? Give feedback.
-
Don't think E4X is on the list of things to be considered to remove. I think it's one of the things that make Rhino unique and stand out from other implementations |
Beta Was this translation helpful? Give feedback.
-
As we use Rhino with some extensions in my company, we would apprecate, if this project gets some progress.
Great, there are some PRs from me, that will break the API, maybe that's my chance to get them merged ;)
FYI: We currently use Java 11 and it is planned to switch to 17 the next 2-3 monts
+1
I think this is not a problem for ME, because we tried to use the latest version
We use one shared scope (#826) here we would need some synchronization. But the javascript executions is then done in a single thread.
We do not use continuations
This should be no probem here. I could imagine helping with testing or even provide fixes. Roland |
Beta Was this translation helpful? Give feedback.
-
What are Rhino's strengths that Nashorn and GraalJS do not have? For example, if there are a lot of use cases on Android (since we don't use invokedynamic), why not focus on that? |
Beta Was this translation helpful? Give feedback.
-
We use GraalJS in Eclipse Dirigible since a few years now and are quite happy with the compatibility with the latest ECMA specifications. It also provides a debug functionality exposed as V8 inspector protocol, so Chrome DevTools can connect to it. However, Rhino has its strengths as well... |
Beta Was this translation helpful? Give feedback.
-
This is quite a ways off, but if we implement class private members, is there going to be a breaking change required in |
Beta Was this translation helpful? Give feedback.
-
What about looking at all the Proxy traps and/or Reflect methods to see what a new/updated EcmaScript-compatible Scriptable interface should look like? I think the Proxy/Reflect give us the definition of the 'contract' that 'objects' in EcmaScript should adhere to |
Beta Was this translation helpful? Give feedback.
-
I'd like to propose that we re-consider a backwardly-incompatible 'Rhino 2.0' project as a few of you proposed before. I used to be against this, but I'm coming around.
For example, things I and others have proposed would make this project a lot more streamlined:
Ideas that make it easier to maintain without necessarily breaking compatibility:
Ideas that would affect compatibility, but not necessarily for everyone:
Ideas that would require anyone embedding Rhino to change their code:
I may be able to find more time over the next months to work on this, a little bit every week, but I'm a lot more interested if we can go faster!
I'm sure that you all have more ideas!
As for how to do this, we could:
Finally, I'm NOT proposing writing a brand-new JavaScript engine in Java -- the Nashorn team already did that!
Beta Was this translation helpful? Give feedback.
All reactions