Skip to content

So-called "next big version" #811

@vendethiel

Description

@vendethiel

LiveScript "2.0"

"It's a-boot time"

So, this got talked about quite about before, but I'm not sure that's actually what's interesting to us now.

However, there's definitely a need to cleanup some things in LS, and especially with ES6/7-related.

Are people okay with breaking changes now? If they're not, we can discuss what we want to change, but in the meantime:

  • Implement type ascriptions (PR starting Start working on type ascriptions #803)
  • ES6 support:
    • modules. @gkz proposed import! and export! for the ÈS6 modules (we need to decide between <<<{<,} and import {all,} anyway)
    • classes: I don't think we want them. LiveScript code tends to use invokable class bodies
    • async/await can be delayed a bit more, I think. It's ES7, and it's not quite there yet... We'd also need to decide on a syntax (eww ->**)
    • const needs to be compiled to ES6's const
    • I'm not sure we need to change let's meaning, I don't think it adds much.
  • Remove for ever
  • Parse the star as a real operator (not just void=)
  • Remove implements (unless people actually use it)
  • Remove the match-introduced operators >== etc
  • Make match an actual pattern matching operation (semantics TBD, that can come later)
  • Remove operator overloading (...or make the compiler aware of types...)
  • Trim down synonmys. Includes otherwise/default, case/when, =>/then (I guess this one is the one people like), etc

This will be controversial (at best), but I think it's worth discussing:
I believe we should remove implicit variable declaration. We have var, and := when we need to change a value.
I think the scoping rules would seem much saner if we had to explicitly declare those. But I know this isn't going to fly for a lot of people, so...

There's another controversial topic: .., it and that. I like what we currently have, but I'm too biased to know if that bugs people or not.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions