Skip to content

Add a feature specification for the metaobject proposal#4301

Merged
eernstg merged 17 commits into
mainfrom
spec_metaobjects_mar25
Jun 12, 2025
Merged

Add a feature specification for the metaobject proposal#4301
eernstg merged 17 commits into
mainfrom
spec_metaobjects_mar25

Conversation

@eernstg
Copy link
Copy Markdown
Member

@eernstg eernstg commented Mar 24, 2025

This PR adds a feature specification for the metaobject proposal (formerly known as 'more capable Type objects'). For simplicity, it does not include the part about Type.reify (that will be specified separately).

Comment thread working/4200-metaobjects/feature-specification.md
Comment thread working/4200-metaobjects/feature-specification.md Outdated
Comment thread working/4200-metaobjects/feature-specification.md Outdated
Comment thread working/4200-metaobjects/feature-specification.md
Comment thread working/4200-metaobjects/feature-specification.md Outdated
Comment thread working/4200-metaobjects/feature-specification.md
Comment thread working/4200-metaobjects/feature-specification.md Outdated
Comment thread working/4200-metaobjects/feature-specification.md Outdated
Comment thread working/4200-metaobjects/feature-specification.md
Comment thread working/4200-metaobjects/feature-specification.md
Comment thread working/4200-metaobjects/feature-specification.md
@ghost

This comment was marked as off-topic.

@mraleph

This comment was marked as off-topic.

@ghost

This comment was marked as off-topic.

Copy link
Copy Markdown
Member Author

@eernstg eernstg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lots of improvements, PTAL!

The change to a more abstract approach does get a little bit silly when we have to reinvent covariant along the way, but it does also make some other things simpler. I think it's a slight improvement on average.

However, it's a major point in the design of this feature that it does not introduce a lot of completely new from-scratch primitive semantics, it is simply a way to transform a type C<T1 .. Tk> to an object MetaC<T1 .. Tk>, and all the expressive power follows from that, based on well-established mechanisms like superinterfaces, overriding declarations, etcetc.

Comment thread working/4200-metaobjects/feature-specification.md Outdated
Comment thread working/4200-metaobjects/feature-specification.md Outdated
Comment thread working/4200-metaobjects/feature-specification.md
Comment thread working/4200-metaobjects/feature-specification.md Outdated
Comment thread working/4200-metaobjects/feature-specification.md Outdated
Comment thread working/4200-metaobjects/feature-specification.md Outdated
Comment thread working/4200-metaobjects/feature-specification.md Outdated
Comment thread working/4200-metaobjects/feature-specification.md Outdated
Comment thread working/4200-metaobjects/feature-specification.md
Comment thread working/4200-metaobjects/feature-specification.md
Comment thread working/4200-metaobjects/feature-specification.md
Comment thread working/4200-metaobjects/feature-specification.md Outdated
Comment thread working/4200-metaobjects/feature-specification.md Outdated
@eernstg
Copy link
Copy Markdown
Member Author

eernstg commented Jun 12, 2025

I'll land this now, and we can then take detailed discussions in separate language issues, as usual.

@eernstg eernstg merged commit 17313ed into main Jun 12, 2025
3 checks passed
@eernstg eernstg deleted the spec_metaobjects_mar25 branch June 12, 2025 09:31
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

Successfully merging this pull request may close these issues.

6 participants