Document the current approach to object naming and object publicity in CLR metadata
- Dominant language
- C#
- Stars
- 451
- Forks
- 49
- Avg merge
- 13h 59m
- Merged PRs (30d)
- 6
Description
Currently, we lack the documentation on our approach on object naming, and what objects (functions, types) are considered public and what aren't.
We should add this documentation, and consider it a public contract (with versioning consequences if we break/extend it).
See my chain of essays in #345 and #372, and the incident in #1015.
Current rules (as I understand them?):
- all functions are `static public`, emitted either in the module type (global functions) or the global type (compiler parameter)
- all typedefs are private
- all types that are not typedefs are public, normally emitted as their short type name (e.g. `struct A` → `A`
- we have a global namespace option (so all our stuff will get into a namespace)
- enums will now have prefix `_Enum_` (subject to change)
- translation units are not visible to the user (so far)
Contributor guide
Research direction
Start by reading the essays in issues #345 and #372, then review incident #1015 and compare them with the current rules listed here. Document the naming and publicity approach for functions, typedefs, types, enums, namespaces, and translation units, including its public-contract and versioning implications; done means the current behavior and open uncertainties are clearly recorded.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c, csharp
- Domain
- compilers, documentation
- Issue type
- Documentation
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100