The specs

Designed, not built — kept apart from the guide and the reference, which describe only what runs today. A reader looking up a construct must never find a plan described as if it worked.

pagecovers
surface.mdthe policy: where a form comes from, what the surface will not become, and the closed list of what has no surface code
packages.mdone integrated registry with mc, what makes a package a teko package, and how a consumer pins the compiler and the library
self-hosting.mdthe single unit, and why the criterion is the object rather than the executable
dependency-injection.mdthe DI model as decided, including the parts that are not built
datetime.mdDateTime and TimeSpan: the tick, the members a primitive gets, and the one piece blocked on a clock in mc's <sys>
decimal.mddecimal: C#'s 128-bit exact base-ten number, as a sixteen-byte primitive that moves by address
params-typed.mdparams T[], the typed variadic list — built, the reference describes it; the page is kept for the steps still open and for what the flip measured
small-ints.mdi8, i16, i128 and u128 — the integers C# has and teko does not, and the tk_is_int_ty predicate they change
enum.mdenum with an underlying type, a distinct type of its own, the bitwise operators and a switch over the names
guid.mdGuid — sixteen bytes, Parse/ToString, ordering, and the one function blocked on mc
string.mdstring as a counted class beside str, the interned literal, value equality, indexing, and interpolation blocked on mc's lexer
datetime-extras.mdDateOnly, TimeOnly and DateTimeOffset — a proposed section of the DateTime page, kept separate so two branches do not conflict
roadmap-1.0.mda draft: what v1.0.0 should require, and what of it depends on mc

The order the type work lands in #

The four pages above, together with decimal.md and datetime.md, are one sequence, cheapest first. Each crumb lands on its own and is gated on its own fixtures; the dependency column is the only thing that fixes the order.

#crumbpagesizedepends on
1N0 i8/i16 and the tk_is_int_ty predicatesmall-ints.mdS—
2N1b a constant that does not fit its slot (optional)small-ints.mdSN0
3N2a enum: the type, the operators, the switchenum.mdMN0
4P0 the probesdocs/specs/datetime.mdS—
5C1 TimeSpan, and the primitive-member mechanismdocs/specs/datetime.mdLP0
6N2b enum: ToString, Parse, the staticsenum.mdSN2a, C1
7C2 DateTimedocs/specs/datetime.mdLC1
8N2c DateTimeKind becomes an enumenum.mdSN2a, C2
9N4 DateOnly and TimeOnlydatetime-extras.mdMC2
10C3 the sixteen-byte value and teko_wide.tkdocs/specs/decimal.mdMC1
11N3 Guidguid.mdMC3, C1
12N5 DateTimeOffsetdatetime-extras.mdMC2, C3
13C4 the decimal arithmeticdocs/specs/decimal.mdLC3
14C5 decimal round and textdocs/specs/decimal.mdMC4
15N6 i128 and u128small-ints.mdLC3, C4
16N7 string, the valuestring.mdL—
17N8 string, the methods and the indexstring.mdLN7
18C6 DateTime.Now, UtcNow, Todaydocs/specs/datetime.mdSblocked: a wall clock in mc's <sys>
19N9 Guid.NewGuidguid.mdSblocked: an entropy source in mc's <sys>
20N10 $"..." interpolationstring.mdMblocked: mc's lexer refusing $ before "
21C7 the native wide instructions (optional, speed only)docs/specs/decimal.mdSC4

N7 and N8 depend on nothing and are placed late only because they are the most expensive; they can be pulled forward at any point without moving anything else. N0 is first for a reason that is not its size: it fixes the predicate that decides what an integer is, and it has to be right before a second TK_SINT type exists.

object and Nullable<T> are outside this sequence and string.md § 11 says where they enter and what each one waits on.

What v0.4.0 refuses is not here: it is catalogued in ../reference/not-yet.md, with the message each refusal answers. Nothing on that list is a promise about a later version, and nothing on this one is a schedule.

Edit this page