Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Language experiments #192

Open
evincarofautumn opened this issue Aug 18, 2017 · 0 comments
Open

Language experiments #192

evincarofautumn opened this issue Aug 18, 2017 · 0 comments

Comments

@evincarofautumn
Copy link
Owner

I’m planning on doing a release sometime this year, probably around Christmas. There have been some suggestions for language features and syntax changes that may be desirable, but might have a significant impact on how Kitten code is written. I don’t want to generate a lot of changes right now because we need to ensure the tooling and documentation deal adequately with the language as-is. So what I propose is that features like these be rolled out behind feature gates, under the name “language experiments”.

The plan is to voluntarily collect analytics about which language experiments are in popular use, and use that to democratically guide the design of the language and standard libraries; after some period of time, we may promote experiments with positive results to the core language, and do a deprecation and removal cycle for those with negative results.

Experiments affecting syntax and language semantics will be enabled by language pragmas, in the form of an about { … } block: as soon as the lexer reaches such a block, the feature will be enabled in that file for the remainder of compilation. This needs to be done as early as possible in the compiler pipeline, because language features may affect any stage of compilation.

Experiments in the common vocabulary will be enabled by importing features from a standard experimental namespace. For convenience, we might allow wildcard imports of experimental library features so they behave as if they were defined in the common vocab, even though wildcards will not be allowed for any other import.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant