--- title: T-spec meeting 2024-03-07 tags: ["T-spec", "meeting", "minutes"] date: 2024-03-07 discussion: https://rust-lang.zulipchat.com/#narrow/stream/399173-t-spec/topic/Meeting.202024-03-07 url: https://hackmd.io/hMSeVu9kQ2myAiQGM9JP6w --- Attendees: Joel Marcey, Mondiac Cat, Eric Huss, Mario Carneiro, Lukas Wirth, Connor Horman, TC, Pietro, pnkfelix Potential Agenda: * Representation and Validity Discussion * GitHub Issue Triage * Chapter Selection and Status ## Representation and Validity [Context](https://rust-lang.zulipchat.com/#narrow/stream/399173-t-spec/topic/representation.20and.20validity) Connor: Ralf wants layout separate from representation Mario: Also a disagreement about the use of the word "representation". The use here is not the same as used in the opsem discussions Connor: Used the definition in the discussion so that could use the definition of type like did Mario: opsem is going to be using minirust for this whole portion of the spec. Why isn't the prose version of the spec just using word for word minirust. Connor: The wording doesn't need to be the same, just the meaning. But it needs to be adaptable. Mario: minirust doesn't have a spec per se, but it does have structure. There should be a 1:1 correspondence with the spec and what minirust says. Felix: How do we validate against minirust if we structure the content differently than how minirust describes it. Felix: It is a good goal that minirust and the spec are consistent. Connor: Manual validation? Joel: That seems like a tough thing to do, possibly error prone. Connor: Doesn't want to import SpecR Mario: Most of the non-code minirust text is not normative. Connor: doesn't think 1:1 correspondence is possible. Felix: Impossible or not ideal? Mario: It may be ok to have similar, duplicative information to the reader, for example on size Joel: minirust is the default and we modify the spec as necessary Mario: Can go both ways Felix: A in minirust corresponds to A in the spec, 1:1, but it could also be A corresponding to A, B, C in the spec sometimes, 1:many Mario: we should make it possible to have mostly a 1:1 mapping Connor: 1 minirust concept should be covered by 1 chapter. Not necessarily a clause to line relation, but chapter to struct. Mario: Can we prototype this? Compromise a literal translation of minirust to what can be a spec. Joel: What is the downside of just going Connor's route? Mario: Folks working on minirust will probably end up being unhappy. Want to get to a place where everyone is happy Joel: Where do we go from here? Mario: We start with an enumeration, for each thing we say about all values, one for each of them, text for each one of those cases, and then done. Joel: Will there be a jarring difference between writing the spec the "minirust" way vs. other areas of the spec that may not be written that way? Mario: We don't need to write the spec as code Felix: WHy not start on text about values first? Why is that not a natural place to start? Connor: Working based on time to take to complete. Value type could be months of work Mario: Not convinced it will be months. Could be a day. Especially if you utilize what already exists in minirust. Connor: Have background knowledge on layout and representation. Mario: We want representations for every value. Connor: Just assume the minirust definition. Mondiac Cat: [Minirust values definition](https://github.com/minirust/minirust/blob/master/spec/lang/values.md) Felix: Me, Joel, and potentially Mara can work on this ## GitHub Issue Triage [Issues to discuss](https://github.com/rust-lang/spec/issues?q=is%3Aopen+is%3Aissue+label%3A%22t-spec+meeting+discussion%22) ### Markdown Style Guideline [Issue](https://github.com/rust-lang/spec/issues/40) Connor: End of lines? Eric: Use backslash to represent end of line. TC: The "one sentence per line" style proposed is difficult for me to read, personally. I always have to read the rendered version when the source is in this style. And since sentences can still be long, I still need to turn on wrapping in my editor, and the result of that is very unpleasant. This style feels like a workaround for poor tooling in the days before highlighted word diffs and highlighted side-by-side diffs. Mario: One line per phrase? Line breaking on semantically important places. Eric: Semantic linefeed is fine. Joel: Linter for this or manual enforcement. Eric: Can modify reference linter for this. Mario: Phrase-based semantic line feeds look a bit like poetry. TC: As with poetry, that can make it difficult to enforce a consistent style. There seem to be three options: semantic (and/or phrase-based) line feeds, hard wrapping (e.g. at 80 characters), or soft wrapping (i.e. line per paragraph). Pietro: Ferrocene wraps on 80 chars, but is not strictly enforced. Lukas: Doesn't prefer wrapping at 80. Likes one sentence per line Felix: In terms of workflows, I'm curious whether people spend more time reviewing rendered text, or spend more time looking at the source (which puts a strong value on the density of the text and raises the issues TC mentioned)? Connor: source and rendered side by side Joel: Same. But generally reviews source during GitHub reviews Mario: Both semantic linefeed and 80 characters Pietro: People mostly want to review the source code because of forking locally. Mario: Can you just have a rule for suggested breaks? Just do something reasonable. Felix: Can leave it up to the author, but some guidance is necessary Eric: Make a proposal not to have line wrapping like TC was suggesting. Most of spec will be short clauses. **Proposal** **No line wrapping Break on short clauses** ## Chapter Selection and Status [Chapter Outline and assignments](https://github.com/rust-lang/spec/issues/43) [Connor's chapter on Dynamic Layout](https://github.com/rust-lang/spec/pull/15) Matthew Woodcraft [offered](https://rust-lang.zulipchat.com/#narrow/stream/399173-t-spec/topic/Lexing) to help with chapter on Lexing