T
The Feedback Loop
thefeedbackloop.xyz · Personal blog · on HN since 2016
The Feedback Loop is a blog by Yehuda Katz-adjacent language designers on Rust, JavaScript's TC39 process, and syntax design.
What HN saysHN commenters often cite its post on Stroustrup's Rule, that new features need loud syntax while established ones get terse notation, as a useful lens on language design.
21HN people shared it
10linked it in comments
12stories submitted
337story points
3 years agolast shared
2016people per year2026
Most-shared posts
- 1Stroustrup's Rule and Layering Over Time in Rust7 people · 228 points · first shared 2016 · 73 comments on HN
- 2Safety is Rust's Fireflower3 people · 2 points · first shared 2016 · discussion on HN
- 3Designing and Implementing Glimmer Like a Programming Language2 people · 2 points · first shared 2017 · discussion on HN
- 4TC39: A Process Sketch, Stages 0 and 12 people · 2 points · first shared 2016 · discussion on HN
- 5I Bet That *Almost* Works2 people · 1 points · first shared 2016 · discussion on HN
- 6Thoughts on “Dependency hell is NP-complete”1 people · 95 points · first shared 2016 · 30 comments on HN
- 7The Mechanism Is Not the Mental Model1 people · 2 points · first shared 2016 · discussion on HN
- 8Political Detox Week on Hacker News1 people · 2 points · first shared 2016 · 1 comments on HN
- 9Capture the Constraints1 people · 1 points · first shared 2017 · discussion on HN
- 10TC39: Promises, Promises1 people · 1 points · first shared 2016 · discussion on HN
- 11Persuade, Don't Self-Gratify1 people · 1 points · first shared 2016 · discussion on HN
- 12Homepage1 people · first shared 2021
What HN people wrote when they linked it
chalst · 2021-05-03
Dave Herman has been a high signal-to-noise contributor to Lambda the Ultimate over the years; if you want to get an idea as to where he is coming from, looking at his contributions there [1], his slightly active blog [2], and on his now pretty much inactive joint blog [3] are good places to start.
[1]: http://lambda-the-ultimate.org/user/825/track?sort=desc&order=auth…
[2]: http://calculist.org/
[3]: https://www.thefeedbackloop.xyz/
steveklabnik · 2018-09-19
I think ? is a perfect example of Stroustrup's Rule: https://thefeedbackloop.xyz/stroustrups-rule-and-layering-over-time/
> For new features, people insist on LOUD explicit syntax.
> For established features, people want terse notation.
I was pretty against ? when it was proposed. I liked try!. I thought ? was hard to read. I thought try! was concise enough. After writing (and reading) lots of code with ?, I'm all in. Heck, ? still isn't extendable for user-defined types, and now I want that! We made ? work in main, and in tests.
It's now one of my favorite features of Rust. YMMV.
chubot · 2023-11-27
You might be referring to this, which I think is even more accurate. Dave Herman quotes him:
https://www.thefeedbackloop.xyz/stroustrups-rule-and-layering-over-tim…
One of my favorite insights about syntax design appeared in a retrospective on C++ by Bjarne Stroustrup:
For new features, people insist on LOUD explicit syntax.
For established features, people want terse notation.
I call this Stroustrup's Rule. Part of what I love about his observation is that it acknowledges that design takes place over time, and that the audience it addresses evolves. Software is for people and people grow.
Side note: Dave Herman is Rust's most unrecognized contributor: https://brson.github.io/2021/05/02/rusts-most-unrecognized-contributor
I often notice that the actual Rust authors and designers respect and are influenced by C++ very much. (Niko M is another C++ fan)
It's only the randoms online that like to start C++ vs. Rust arguments.
Another thing to note is that the Mozilla Rust is MUCH closer to C++ than Graydon's Rust was. Graydon's Rust was not at all about zero-cost abstraction, the shared motto of C++ and Rust.
wycats · 2016-12-19
TC39 member here.
cwmma gets a lot right here: Promises have always been contentious in JS (and TC39) and Domenic has indeed had the patience of a saint attempting to wrangle the various points of view into a coherent proposal.
TC39 as a group is generally very motivated to find positive-sum outcomes and find solutions that address everyone's constraints in a satisfactory way. That doesn't usually mean design-by-committee: champions work on a coherent design that they feel hangs together, and the committee provides feedback on constraints, not solutions.
As a member of TC39, I'm usually representing ergonomic concerns and the small-company JavaScript developer perspective. I've had a lot of luck, over the years, in giving champions my perspective and letting them come back with an improved proposal.
The staging process (which I started sketching out on my blog[1]) has made the back-and-forth easier, which each stage representing further consensus that the constraints of individual members have been incorporated.
Unfortunately, I fear that promise cancellation may be a rare design problem with some zero-sum questions.
It's worth noting that there has been no objection, on the committee, to adding cancellation to the spec in some form.
The key questions have been:
First. Is cancellation a normal rejection (a regular exception, like from `throw`) or a new kind of abrupt completion (which `finally` would see but not `catch`). The current status quo on the committee, I…
Quekid5 · 2018-09-28
> his will probably never happen cause C looms too large in Zig's world, but I wish "*" and especially the super non-intuitive "&" go the way of the dodo and some short keywords replace them. Perhaps "ptr" and "deref"?
Beware Stroustrup's Rule[0] :).
[0] https://thefeedbackloop.xyz/stroustrups-rule-and-layering-over-time/
bcherny · 2017-06-03
I agree on both points. An interesting facet of your 1st point is Stroustrup's Rule [0], which gives more context for an explicit `nominal` keyword.
[0] https://thefeedbackloop.xyz/stroustrups-rule-and-layering-over-time/
mnutt · 2017-04-18
Since Glimmer is implemented as a bytecode VM, they were able to go ahead and pull in many of the improvements that Fiber brings to React:
https://thefeedbackloop.xyz/designing-and-implementing-glimmer-like-a-…
joseraul · 2017-03-03
They may not do user studies like this, but for sure they adapt to user feedback.
https://thefeedbackloop.xyz/stroustrups-rule-and-layering-over-time/
Manishearth · 2017-01-03
> if you provide your own thin abstractions
Without generics these abstractions are hard to work with and hard to make work across libraries. I am reminded of https://thefeedbackloop.xyz/i-bet-that-almost-works/
> Take the rust compiler itself: AFAIK it's now implemented in C++
The compiler is written in Rust. It uses LLVM, which is in C++, for codegen, but in the future we might be able to turn that off too (https://internals.rust-lang.org/t/possible-alternative-compiler-backen…
Besides, the implementation language of a compiler does not make the compiler an "abstraction" over the language. Sort of, but not really.
dbaupp · 2017-02-09
> Of all the things I said, is that really the only one you want to address?
Yes, I guessed (correctly!) that others would inquire about the rest of the comment, I wanted the context. Thank you for taking the time to explain.
> Having said all of that, you probably think I'm in some rare position. However, it's a really big world, and you might be surprised how much sloppy C, C++, Fortran, and COBOL software is out there quietly getting the job done without the constant onslaught of black hats attacking it. We don't all write web browsers and servers. There are a lot of potentially profitable C++ targets in the finance industry, but somehow they survive.
I'm not surprised.
Your argument is something along the lines "a lot of code doesn't have particularly high security requirements" and "sandboxing/airgapping mitigates problems", which are both totally reasonable and indeed are things that Rust core team acknowledge (although the first is becoming less and less true, in "surprising" places, as more things are internet connected). Additionally, the latter is a "defense in depth" strategy that the Rust community is keen on (e.g. https://github.com/servo/gaol): it is understood that code can have bugs, inside unsafe code or not, and so limiting the interaction with things outside the program is always good.
However, neither of these facts support, for instance, an expert being able write a memory-safe regex library in C++ in a reasonable time (e.g. how long it took for…