sweet-js/sweet-core

3.0 release checklist

Closed this issue · 14 comments

The next release has a number of breaking changes and new features so I want to make sure we're remembering everything.

Breaking changes:

  • #``foo``.get(0) is a RawSyntax instead of Syntax
  • ctx.next().value is a Term instead of a TermOrSyntaxWrapper
  • ctx.contextify() new method instead of .inner() method on the wrapper
  • compile now takes a path and loader instead of just the source to compile

New Features:

  • readtables
    • not exposed to users yet, should we get those in before releasing?
  • recursive module loading
  • console/process added to syntax scope
  • loader api when using the API

Todo before publishing 3.0:

  • fix bugs with term wrapping #625
  • update tutorial/reference docs
  • expose helpers in the browser #669
  • document breaking changes in release notes
  • document new module features
  • document custom operators
  • unify term/syntax #632
  • extend dispatch capabilities of readtables
  • expose readtables to user code?

Am I forgetting anything?

I don't want to expose the readtables until we have lang support. It would be nice to do a shakedown before putting this out there. I mentioned a couple of things in #626.

Is all of the module stuff finished? I don't think named imports for syntax are working.

Is all of the module stuff finished? I don't think named imports for syntax are working.

Default exports of syntax don't work until we figure out #620 but I'm fine holding off on that for now. Named imports for syntax should work now: https://github.com/sweet-js/sweet.js/blob/master/test/test-modules.js#L110-L136.

Modules are definitely not "done", I'll open an issue with what's left, but I don't think the remaining work need to hold up 3.0.

Let me know if I can help w/ anything to get this out the door.

The ASI bug really bothers me but I don't know where to start.

I'm also a little worried about ctx.next().value.value.val(). I know that in a for...in loop it'll just be term.value.val(), but I'm certain people are going to get confused.

Agreed. I realized that the other day as I was trying to update the docs and figured the solution was helper functions imported for syntax that hid the wrapping/unwrapping:

import { isIdentifier } from 'sweet.js/helpers' for syntax;

syntax m = ctx => {
  for (let term of ctx) {
    if (isIdentifier(term)) {
      // ...
    }
    // ...
  }
}

When we get around to unifying term/syntax the helpers can change and macro authors won't have to do anything.

But as I was working on that I found a bug in the module code that I need to fix first (I'll open an issue in a sec).

Oh, nevermind about the module bug. I just tried it again and realized I was importing entirely the wrong thing. I'll just focus on building out the helpers.

I'd like to get #651 fixed before the release.

Do we want to do the refactor mentioned mentioned in #650 (comment) before release? We can always do a patch release.

#658 has to be fixed.

Yes on #658 and no on the refactor.

I think we should shoot for releasing 3.0 this weekend. The main remaining tasks are documentation cleanup and getting the helpers available in the editor #669. Anything else we want to get in?

Remove useless controls as mentioned in #663 (comment) ?