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

Planning: testing feature support #23

Open
LB-- opened this issue Apr 30, 2015 · 1 comment
Open

Planning: testing feature support #23

LB-- opened this issue Apr 30, 2015 · 1 comment
Assignees
Labels

Comments

@LB--
Copy link
Member

LB-- commented Apr 30, 2015

Many languages are versioned in such a way that several features, changes, etc. are added in each version. However, the tools and compilers for the language often don't update to support all the features at once - rather, individual features are supported at separate times, and the tool or compiler reports compatibility with either the previous version of the language or the next despite neither being true. Additionally, if a feature is supported but certain corner cases are not, and the feature is used multiple times, it is difficult to isolate which occurrences are problematic and which are fine.

Instead, it would make more sense to have a detailed way of testing feature support. Rather than versioning the language, individual features will be versioned and identified by a name string and a version string. (I'm not sure whether the version string should be traditional x.y.z or a date)

This way, compilers and tools can indicate which features and which versions of those features are supported, and whether there are any known bugs with specific versions. This would also allow easy nonstandard extension of the language. Thus the full identifier of a feature is its category string (standard, custom, some specific tool, etc), its name string (e.g. "multiple inheritance"), and its version string.

When requesting version information for a feature, the versions should be comparable by chronological order with the normal comparison operators, rather than by string comparison.

It is up to the user to decide whether features are required - simply raising a compile-time exception if a required feature is not supported should be sufficient.

@LB-- LB-- added the planning label Apr 30, 2015
@LB-- LB-- self-assigned this Apr 30, 2015
@LB--
Copy link
Member Author

LB-- commented Jul 13, 2016

There should be an easy mechanism to protect against major version changes being considered compatible, because by definition they are not.

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

No branches or pull requests

1 participant