ForNeVeR / ForNeVeR/Cesium

Document the current approach to object naming and object publicity in CLR metadata

Open
#1,016 0 comments 0 reactions 0 assignees View on GitHub
area:cil-interop area:compiler kind:documentation status:help-wanted
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.