esprima icon indicating copy to clipboard operation
esprima copied to clipboard

Release 5.0

Open ariya opened this issue 7 years ago • 6 comments

(Only placeholder for now. More TBD)

What goes into this release? New ES2018 syntax support:

  • [ ] #1587 Revised template literal
  • [x] #1588 Object rest/spread properties
  • [x] #1728 Dynamic import

Release workflow:

  • [ ] Bump version number
  • [ ] Update ChangeLog
  • [ ] Update devDependencies
  • [ ] Activate the version at esprima.readthedocs.io
  • [ ] Check for performance regression
  • [ ] Tag the repository
  • [ ] Publish to npm
  • [ ] Announce in the mailing-list
  • [ ] Update the web site

ariya avatar Feb 01 '17 02:02 ariya

Are ES Modules going to be a part of this release?

lastmjs avatar Apr 20 '18 23:04 lastmjs

@ariya Any progress on this? Seems to be soon 2 years behind schedule. In the docs it is stated that Esprima should be updated every year.

donnagf avatar Nov 07 '19 04:11 donnagf

@ariya Hi, anything I can do to help 5.0 get to the finish line? I'm knee deep in a project depending rather heavily on it, with zero desire to switch, so I'm rather motivated...

boutell avatar Feb 11 '20 20:02 boutell

OK, this is awkward, but it turns out that moving to acorn was straightforward. Obviously I have just started using acorn, but so far it seems to cover my use case equally well, with the addition of support for newer syntax. Still interested in understanding this ecosystem and learning which use cases might still be stronger in esprima.

boutell avatar Feb 11 '20 20:02 boutell

Acorn is written in Javascript though, whereas Esprima seems to have upgraded to Typescript since V4, so I'd really like to use Esprima if possible.

Timmmm avatar Jan 27 '21 22:01 Timmmm

Esprima seems to have upgraded to Typescript since V4

Actually I was wrong on two counts:

  1. V4 already uses Typescript but unfortunately they don't generate and ship type definitions (.d.ts files), even though it's really easy - just add --declaration to the tsc command and then move all the .d.ts files into dist (and I guess add them to package.json:files.

  2. Although it technically is written in Typescript, they unfortunately haven't enabled the noImplicitAny option so loads of the code is like this:

    const program = isModule ? parser.parseModule() : parser.parseScript();
    const ast = program as any;

    if (collectComment && commentHandler) {
        ast.comments = commentHandler.comments;
    }

And the main generated types are kind of useless:

export declare function parse(code: string, options: any, delegate: any): any;
export declare function parseModule(code: string, options: any, delegate: any): any;
export declare function parseScript(code: string, options: any, delegate: any): any;
export declare function tokenize(code: string, options: any, delegate: any): any;

I made a task to fix that: #2066

Timmmm avatar Jan 28 '21 09:01 Timmmm