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 aRawSyntax
instead ofSyntax
ctx.next().value
is aTerm
instead of aTermOrSyntaxWrapper
ctx.contextify()
new method instead of.inner()
method on the wrappercompile
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.
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) ?